dea*_*ton 2 unity-game-engine unityscript
在Unity中,它提供了获取GameObject实例的函数
GetInstanceID ()
Run Code Online (Sandbox Code Playgroud)
虽然实例ID可以与游戏对象不同,但是通过实例ID获取游戏对象的函数
InstanceIDToObject()
Run Code Online (Sandbox Code Playgroud)
仅在EditorUtility中提供,在release中无法使用。
据我认为,使用HashTable可能是实现这一目标的一种方法,但是还有其他方法可以实现这一目标吗?
小智 6
解决方案可以在Unity论坛上找到,为了方便我引用一下。
不直接,但您可以使用 InstanceID 重命名该对象,然后使用 InstanceID 执行 GameObject.Find 来以这种方式访问该对象。
gameObject.name = GetInstanceID().ToString();
var foo = 38375; // A made-up InstanceId...in actual code you'd get this from a real object...you can store the instance ids in an array or something
GameObject.Find(foo.ToString()).transform.position = whatever;
Run Code Online (Sandbox Code Playgroud)
我还有一个哈希表,并使用实例 id 作为哈希表的键来访问每个对象。您可以自己检查并为对象分配一个标识符,但由于每个对象无论如何都有一个唯一的 InstanceID(),因此如果情况需要,也可以使用它。
来源:https ://forum.unity3d.com/threads/can-i-use-instanceid-to-access-an-object.12817/