【原应用背景】
在一个控制脚本里通过
GameObject objectSpawned = GameObject.Instantiate(objectPrefab, position, Quaternion.identity) as GameObject;
objectSpawned.GetComponent<BaseObject>().setName(name);
objectSpawned.SetActive(true);
紧接着发现,setName(name)并不能成功修改对象的变量。
【原因】
在SetActive之前,脚本被禁用了。
但是很奇怪,即便在禁用的情况下调用Debug.log()仍然能看到输出:为了检查为什么出错,我在函数中加了log信息。
public void setName(string name){
m_name = name;
Debug.log("test");
}
结果就是在面板中能看到输出“test”,但是m_name的值无法被修改。
【解决】
先SetActive再调用setName方法修改变量。