我是Unity新手。尝试将.obj文件(下载并保存在我的文件系统中)加载/附加到Unity中的游戏对象。我尝试使用以下代码,但出现错误。
Resources.Load(My_File_Path).transform.parent = targetGameObject;
我得到的错误:
错误CS1061:类型为UnityEngine.Object' does not contain a definition for
transform',找不到扩展方法transform' of type
UnityEngine.Object'。您是否缺少装配参考?
答案 0 :(得分:1)
您似乎已经正确加载了预制件,但是问题在于您没有处理预制件的实例-您正在处理预制件本身,它是Object
而不是{{1 }}。
在访问GameObject
之类的GameObject特定成员之前,您需要Instantiate()
预制。此方法接受类型为transform
的参数,因此请传递您的预制引用,并将所得的Object
实例分配为GameObject
的子代:
targetGameObject
答案 1 :(得分:1)
在运行时从预制中创建游戏对象需要您实例化该对象。
首先,要实例化预制件,您无需担心转换。...
使用Resources.Load
时-您需要确保项目中有一个Resources文件夹。如果不做。
请注意,然后在资源文件夹中创建一个名为Prefabs的子文件夹。您不必这样做。
在资源文件夹中,您可以放置预制件。 (将完成的项目从场景中拖放)一旦您将预制件从场景中删除就可以安全删除。
现在的代码是:
GameObject yourobject = Instantiate(Resources.Load("thenameofprefab") )as GameObject;
您现在可以将预制项目放置在您的游戏对象中,并可以自由地操纵其变形和旋转。
如果在资源文件夹中创建一个预制文件夹,则方法为
GameObject yourobject = Instantiate(Resources.Load("Prefabs/thenameofprefab") )as GameObject;
希望这会有所帮助。
p.s。您可以在该实例化线上设置变换和旋转,只需要检查重载即可了解如何使用它!
答案 2 :(得分:0)
如果我正确理解了这个问题,则首先需要从您的对象创建一个预制件。拖到场景中,然后将创建的GameObject放入资产中。
您可以创建
public GameObject prefab;
在您的班级中。
然后像这样实例化它:
GameObject obj =Instantiate(prefab, Vector3.zero), Quaternion.identity);
然后您可以像以前一样附加它:
obj.transform.parent = targetGameObject;