我有两个类clsA,clsB (都是非静态的).clsB附加到20 GameObject,而clsA只附加到单GameObject。现在,clsB正在使用ClsA作为参考。我在clsA gameObject in clsB 中创建了一个公共变量,现在在clsB中访问它的属性,它被附加了20个游戏对象(意味着20个脚本到20个gameoBjects)。
我的简单问题是所有20个都包含一个clsA对象或所有包含(ClsA)不同对象/实例。
我知道值类型与参考类型之间的区别,但在这一点上我感到困惑,因为我面临一些问题,所以我很好地提出了这个问题,我自己的理解是,所有20种都只有单一的clsB实例。请尽快澄清。
正如答案所建议的那样,我将此代码用于获取实例Id。令人惊讶的是,它显示的是相同的实例Id。
avgManager = GameObject.Find("AGV Manager").GetComponent<AVGManager>();
Debug.Log(gameObject.name + " : " + avgManager.GetInstanceID());发布于 2016-04-01 07:55:15
我的简单答案是,所有20个包含一个clsA对象,它们只是一个已创建并分配给所有20个对象的实例,因为我已经按实例id进行了检查,所有这些都显示相同的Id(意为实例编号)。
Debug.Log(gameObject.name + " : " + avgManager.GetInstanceID());avgManager分配给20个位置,所有20个位置显示相同的实例id。GetInstanceID 返回对象的实例ID.
发布于 2016-03-21 07:40:48
每个clsB都有自己的clsA实例。因为有20个ClsB,就会有20个clsA对象。您可以通过在visual studio调试器中执行- 使对象ID来验证这一点。
将变量添加到监视窗口,右键单击变量并选择MakeObjectId。对于其中的clsB和clsA的不同实例,再次执行此操作。如果它们不匹配相同的id,则可以确保它们不是同一个实例。
https://stackoverflow.com/questions/36125325
复制相似问题