求助!!Unity中关于脚本中对象实例化失败的问题
田秦 2021-04-23 09:07:40 最近毕设做个小游戏,需要做一个点击按钮响应的功能,需要调用其他脚本,但是我在start函数中实例化后,在响应事件函数中调用却显示空对象异常,着实不明白怎么回事。
之前有个int【】number的问题,后来我硬是弄出来了,但是现在这个playerAttack我确实没办法了。
上代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AbilityUp : MonoBehaviour
{
public Image[] dialogBox;
public Text[] dialogBoxText;
public Button[] buttons;
int a, b, c;
public int[] number;
private PlayerAttack playerAttack;
private PlayerHealth playerHealth;
private GameData gameData;
private PlayerUp playerUp;
private string[] texts;
private int caseuse;
// Start is called before the first frame update
void Start()
{
gameData = GameObject.FindGameObjectWithTag("GameData").GetComponent<GameData>();
playerUp = GameObject.FindGameObjectWithTag("PlayerAttack").GetComponent<PlayerUp>();
playerAttack = GameObject.FindGameObjectWithTag("PlayerAttack").GetComponent<PlayerAttack>();
playerHealth = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerHealth>();
doRange();
}
// Update is called once per frame
void Update()
{
}
void p()
{
print(playerAttack.name);
}
void doRange()
{
for (int i = 0; i < 3; i++)
{
number[i] = Random.Range(0, 4);
//判断没有获取相同的key值
if (i != 0)
{
for (int j = 0; j < i; j++)
{
if (number[i] == number[j])
{
i -= i;
}
}
}
}
}
public void SetWords()
{
for(int i=0;i<3;i++)
{
dialogBoxText[i].text = gameData.Load(number[i]);
if(i==0)
{
a = number[i];
}
if(i==1)
{
b = number[i];
}
if(i==2)
{
c = number[i];
}
}
}
public void button1()
{
// playerUp.Up(number[0]);
this.gameObject.SetActive(false);
}
public void button2()
{
p();
Up(b);
this.gameObject.SetActive(false);
}
public void button3()
{
Up(c);
this.gameObject.SetActive(false);
}
private void A()
{
}
private void Up(int i)
{
if (i == 0)
{
playerAttack.attackToHealth += 2;
}
if (i == 1)
{
playerAttack.Critcal += 0.1f;
}
if (i == 2)
{
playerAttack.Critcal_Hit += 0.2f;
}
if (i == 3)
{
playerHealth.maxHealth = (int)((int)playerHealth.maxHealth * 1.2);
}
if (i == 4)
{
playerAttack.PlayerDamage += 1;
}
if(i==5)
{
print("yes");
}
}
}
最离谱的是,我在start函数中实例化后debug是有输出的,特么到下面就没了