相关疑难解决方法(0)

在C#中用另一个替换对象实例

在这个问题中,我想知道是否以及如何做到这一点.这种技术似乎是非常糟糕的做法,但似乎我正在使用的API(UnityEditor)正在做这样的事情,我只是很好奇.

如果对同一对象有多个引用,是否可以将新对象实例化到同一个内存槽中,以便所有先前的引用都指向新对象?

我发现唯一可行的方法是使用非托管C++.基本上发生以下情况:

// Original prefab
GameObject prefab = x;
prefab.tag = "Untagged";

// A copy of the original prefab
GameObject prefabCopy = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
prefabCopy.tag = "EditorOnly";  // Change from initial value "Untagged"

Debug.Log(prefab.tag);     // "Untagged"   - expected
Debug.Log(prefabCopy.tag); // "EditorOnly" - expected

// Replace contents of prefab file with `prefabCopy`
PrefabUtility.ReplacePrefab(prefabCopy, prefab);

// Destroy the copy
DestroyImmediate(prefabCopy);

Debug.Log(prefab.tag);     // "EditorOnly"   - whoa?
Run Code Online (Sandbox Code Playgroud)

prefab现在如何指向不同的对象?

注意:请记住,Unity是基于Mono的.NET风格构建的

c# memory pointers reference unity-game-engine

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×1

memory ×1

pointers ×1

reference ×1

unity-game-engine ×1