Unity C#跨脚本添加浮点数遇空引用异常求助
解决Unity中C#脚本的NullReferenceException问题
嘿,我来帮你搞定这个报错!先给你拆解下这个问题到底出在哪,再给你修复方案。
首先,理解报错的意思
你看到的 NullReferenceException: Object reference not set to an instance of an object 其实是说:你尝试去访问一个还没被实例化的对象引用——简单说就是某个脚本变量是null(空的),但你却想用它的属性或方法,自然就报错了。
从报错行号来看,问题出在Resources.cs的第42行(Die()方法里),而这个方法是在第22行的Update()里被调用的。结合你的需求(从一个脚本向另一个脚本加浮点数),大概率是你要访问的另一个脚本的引用没正确赋值。
常见错误场景&修复方案
假设你的脚本大概是这样的(新手常犯的错误写法):
using UnityEngine; public class Resources : MonoBehaviour { // 声明了另一个脚本的变量,但没赋值 private AnotherScript targetScript; void Update() { Die(); } void Die() { // 第42行:这里直接访问targetScript的浮点数,导致空引用报错 targetScript.resourceValue += 5.0f; } }
下面给你两种靠谱的修复方式:
方式1:在Inspector面板手动赋值
这种方法简单直观,适合固定的脚本引用:
using UnityEngine; public class Resources : MonoBehaviour { // 把变量设为public,这样就能在Unity编辑器里看到它 public AnotherScript targetScript; void Update() { Die(); } void Die() { // 先检查引用是否为空,避免报错 if (targetScript != null) { targetScript.resourceValue += 5.0f; } else { Debug.LogError("targetScript引用为空!请在Inspector面板中拖入挂载了AnotherScript的GameObject"); } } }
操作步骤:
- 确保
AnotherScript已经挂载到某个GameObject上 - 选中挂载了
Resources脚本的GameObject,在Inspector面板找到Target Script字段 - 把挂载了
AnotherScript的GameObject拖入这个字段即可
方式2:通过代码动态获取引用
如果需要在运行时自动找到目标脚本,可以用这种方法:
using UnityEngine; public class Resources : MonoBehaviour { private AnotherScript targetScript; void Awake() { // 情况1:两个脚本在同一个GameObject上 targetScript = GetComponent<AnotherScript>(); // 情况2:目标脚本在其他GameObject上(比如名字叫"ResourceHolder"的对象) // targetScript = GameObject.Find("ResourceHolder").GetComponent<AnotherScript>(); } void Update() { Die(); } void Die() { if (targetScript != null) { targetScript.resourceValue += 5.0f; } else { Debug.LogError("找不到AnotherScript组件!请检查是否正确挂载,或者GameObject名字是否正确"); } } }
问题根源总结
你之所以报错,核心原因就是你声明了另一个脚本类型的变量,但没有给它赋值——既没在编辑器里手动拖入引用,也没通过代码获取到有效的组件实例,导致变量是null,当你尝试用它的浮点数变量时,就触发了空引用异常。
额外提醒几个注意点:
- 脚本文件名必须和类名完全一致(比如
AnotherScript.cs的类名必须是AnotherScript) - 尽量在
Awake()或Start()里完成引用的初始化,避免在Update()里重复获取 - 如果目标GameObject可能被销毁,每次访问前都要检查引用是否有效
内容的提问来源于stack exchange,提问作者user9608906
相关产品推荐
相关产品推荐

