我有两个类 clsA,clsB (两者都是非静态的)。 clsB 附加到20 GameObject,而clsA仅附加到单个GameObject。 现在, clsB 正在使用 ClsA 作为参考。我在 clsB 中创建了一个 clsA 游戏对象的公共变量,现在在clsB中访问其属性,获得了20个Gameobjects(意味着20个脚本到20个gameoBjects)。
我的简单 问题天气全部20包含一个 clsA 对象或全部包含(ClsA)不同的对象/实例。
我知道值类型和引用类型之间的区别,但此时我混淆因为我遇到了一些问题然后我很好地问这个问题 自己的理解说,所有20个脚本( clsB )只有单个clsB实例。请尽快澄清。
作为答案建议我使用此代码来获取实例ID。令人惊讶的是它显示了相同的实例ID。
avgManager = GameObject.Find("AGV Manager").GetComponent<AVGManager>();
Debug.Log(gameObject.name + " : " + avgManager.GetInstanceID());
答案 0 :(得分:1)
每个clsB都有自己的clsA实例。由于有20个ClsB,因此将有20个clsA对象。您可以通过在visual studio调试器中执行 - Make Object ID来验证这一点。
将变量添加到监视窗口,右键单击变量并选择MakeObjectId。再次对其中的clsB和clsA的不同实例执行此操作。如果它们不匹配相同的id,则可以确定它们不是同一个实例。
答案 1 :(得分:0)
我的简单答案是所有20包含一个clsA对象,它们只是一个实例并分配给所有20个对象,因为我按实例ID检查所有显示相同的Id(表示实例编号)。
public static void saveImage(String imageUrl) throws Exception{
URL url = new URL(imageUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
String fileName = "./" + con.getHeaderField("Content-Disposition").split("filename=")[1];
FileUtils.copyURLToFile(url, file);
}
avgManager 分配到20个位置,所有20个位置显示相同的实例ID。 GetInstanceID 返回对象的实例ID。