You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity访问同一GameObject挂载的其他脚本变量报错如何解决

Unity跨脚本访问报错修复方案

错误原因

  • 组件获取逻辑时机错误:C#类的成员变量初始化执行优先级远高于Unity的生命周期方法Awake、Start,此时go变量还未完成赋值,调用go.GetComponent必然触发空引用异常。
  • 潜在的访问权限问题:若idkhorsey脚本中的isAlive变量未使用public修饰符,跨脚本访问会触发权限报错。

修正后的代码

using UnityEngine;

public class idkh2 : MonoBehaviour
{
    // 仅声明变量,不执行获取逻辑
    private idkhorsey ih;

    void Start()
    {
        // 同对象挂载脚本可直接从当前gameObject获取组件,无需额外声明GameObject变量
        ih = GetComponent<idkhorsey>();
        // 增加非空判断避免异常
        if (ih != null)
        {
            print(ih.isAlive);
        }
        else
        {
            print("当前对象未挂载idkhorsey脚本");
        }
    }

    void Update()
    {
        
    }
}

额外配置要求

在idkhorsey脚本中修改isAlive变量的修饰符为公共:
public bool isAlive;

内容的提问来源于stack exchange,提问作者yunum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:06:03