我已经在Unity中创建了一个代码文件,并将其分配给我在场景中放置的空GameObject
:
var obj = new GameObject("Sample");
obj.transform.position = new Vector3(0, 0, 0);
var text = obj.AddComponent<TextMesh>();
text.text = "Hello world";
运行场景时,我可以看到文本。那就是我的问题:我没有在代码中指定任何位置将obj
添加到场景中,但是显然它会自动放置。如果我想在实例化时间之后引入对象,可能会出现问题。
我在做什么错?如何做到这一点?这里的模式/最佳做法是什么?
立即修复:
使用obj.SetActive(false)
暂时禁用对象,然后在需要激活该对象时使用obj.SetActive(true)
。
[其他解决方案/最佳做法:
创建场景中所需的对象,将其另存为预制件(预制对象),然后仅在需要时实例化它。这是进一步阅读预制系统的链接。 https://docs.unity3d.com/Manual/Prefabs.html
对象池通常在您拥有一堆相同的对象(例如激光,子弹等)时使用。观看此视频可能会有所帮助:https://www.youtube.com/watch?v=tdSmKaJvCoA