Man*_*nsa 2 c# transform object unity-game-engine
我试图弄清楚如何从c#代码实例化预制件,我尝试了以下内容:
我创建了一个像这样的公共变换:
public Transform myItem;
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个预制件并将其命名为myPrefab并将其放在我的Assets/Resources文件夹中.
然后我在start()中调用:
myItem = Instantiate(Resources.Load("myPrefab")) as Transform;
Run Code Online (Sandbox Code Playgroud)
运行代码时,Transform保持为空?
我错过了什么?任何帮助表示赞赏.
当对象被实例化时,它们变成GameObjects.您的代码应如下所示:
GameObject myItem = Instantiate(Resources.Load("myPrefab")) as GameObject;
Run Code Online (Sandbox Code Playgroud)
如果你想要一个变换,你可以简单地使用所有GameObjects都有变换组件的事实.
Transform t = myItem.transform.
Run Code Online (Sandbox Code Playgroud)
或者,如果你真的想成为一个坏蛋,你可以在一行中完成所有这些:
Transform myItem = (Instantiate(Resources.Load("myPrefab")) as GameObject).transform;
Run Code Online (Sandbox Code Playgroud)
预制件应放入GameObject而不是Transform:
GameObject myItem = (GameObject)Instantiate(Resources.Load("myPrefab"), typeof(GameObject));
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样从GameObject访问Transform:
Transform transform = myItem.transform;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16379 次 |
| 最近记录: |