我正在使用当前脚本引用公共布尔。现在,我对其进行了设置,以便每当检测到bool本身时屏幕就会抖动。但是我只希望当从另一个脚本(布尔“ hitrun”)中调用布尔时,它会抖动。第二个我删除了!= null部分,我得到了null引用异常,并且在我指定的条件下它不会动摇。我应该为null输入什么?一切正常,直到我取出Update函数中当前没有的!= null。
我已经尝试过使用null和方括号之类的各种不同组合。在这一点上,我只是猜测并希望自己猜对了。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cameraShake : MonoBehaviour {
private characterController runner;
[HideInInspector]
public bool shaker = false;
void Update()
{
if (runner.hitrun != null) {
StartCoroutine(Shake(0.02f,0.02f));
}
}
void Twitchy()
{
StartCoroutine(Shake(0.13f,0.135f));
}
public IEnumerator Shake (float duration, float magnitude)
{
Vector3 originalPos = transform.localPosition;
float elapse = 0.0f;
while (elapse < duration)
{
float x = Random.Range (-1f, 1f) * magnitude;
float y = Random.Range (-1f, 1f) * magnitude;
transform.localPosition = new Vector3 (x, y, originalPos.z);
elapse += Time.deltaTime;
yield return null;
}
transform.localPosition = originalPos;
}
}
NullReferenceException:对象引用未设置为对象cameraShake.Update()的实例(在Assets / scripts / cameraShake.cs:13处)
有一个很大的不同,就是您的源没有我的代码。空引用异常错误不是普遍存在的,并且取决于存在的错误。我之前已经解决了null问题,而我无法解决这一问题。否则我不会问。