c# - 如何从非活动游戏对象访问脚本?
问题描述
当我尝试从我的保存和加载脚本访问播放器脚本时。它总是说“对象引用未设置为对象的实例”。我知道它的原因是 GameObject 处于非活动状态。
public Player player;
void Start()
{
player = GetComponent<Player>().
}
解决方案
是的,从您拥有的一小部分代码和信息来看,这将是问题所在。Unity 的 start 函数只会在对象被激活时被调用。我建议你将这种初始化移到它自己的函数中。
如果您在需要时分配引用,您也可以执行延迟初始化属性之类的操作:
private Player m_Player;
public Player player
{
get
{
if (m_Player == null)
{
m_Player = GetComponent<Player>();
}
return m_Player;
}
}
在这个例子中, player现在是一个属性,你调用它的方式和以前一样,但是当你这样做时,会检查变量 m_Player 是否为空,然后分配它。
推荐阅读
- scala - Akka-Http WebSocket:处理传入消息非常慢
- asp.net-core - 脚手架后更改数据库到本地数据库
- html - 如何使没有边框(渐变背景)的按钮与有边框(轮廓)的按钮大小相同?
- erlang - 主管可以监督的最大子进程数是多少?
- c# - 如何使用 Json.net AS A STREAM 将 JSON 转换为 BSON
- python - 从模块导入字符串作为模块
- html - 如何在行之间和“段落”之间获得不同的间距?
- sql - 如何从 jsonb 字段中转换文本项列表以按 uuid 类型的字段执行 IN 子句?
- android - 在改造 2 中发出多个 GET 请求
- javascript - 单击图片元素时切换 img src 和 source srcset