Как программно прикрепить сборник к GameObject? - PullRequest
0 голосов
/ 17 сентября 2018

Я новичок в 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 'может быть найден.Вам не хватает ссылки на сборку?

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Если я правильно понял вопрос, сначала нужно создать сборный элемент из вашего объекта. Перетащите на сцену и затем поместите созданный GameObject в ваши сборки. Вы можете создать public GameObject prefab; в вашем классе. Затем создайте его так: GameObject obj =Instantiate(prefab, Vector3.zero), Quaternion.identity);
И тогда вы можете прикрепить его, как вы делали это раньше: obj.transform.parent = targetGameObject;

0 голосов
/ 17 сентября 2018

создание игрового объекта из префаба во время выполнения требует от вас создания экземпляра объекта.

сначала, чтобы создать префаб, вам пока не нужно беспокоиться о преобразовании ....

при использовании Resources.Load - вам необходимо убедиться, что в вашем проекте есть папка Resources.если не сделать один.

обратите внимание, что затем я создаю подпапку в папке ресурсов с именем Prefabs.хотя вам не нужно.

в папке ресурсов, вы можете поместить свой сборный элемент.(перетащите готовый элемент из вашей сцены), как только у вас есть префаб, его можно безопасно удалить, если из вашей сцены.

теперь код:

GameObject yourobject = Instantiate(Resources.Load("thenameofprefab") )as GameObject;

у вас теперь есть свой префабэлемент в игреобъекте является вашим объектом и может свободно манипулировать его преобразованием и вращением.

если вы создадите готовую папку в папке ресурсов, метод будет

GameObject yourobject = Instantiate(Resources.Load("Prefabs/thenameofprefab") )as GameObject;

надеюсь, это поможет.

ps вы можете установить преобразование и вращение в этой строке реализации, вам просто нужно проверить перегрузки, чтобы увидеть, как их использовать!

0 голосов
/ 17 сентября 2018

Вы, кажется, правильно загрузили свой префаб, но проблема в том, что вы не обрабатываете экземпляр префаба - вы обрабатываете сам префаб, который является Object, а не GameObject.

Прежде чем вы сможете получить доступ к членам GameObject, таким как transform, вам необходимо Instantiate() ваш префаб. Этот метод принимает аргумент типа Object, поэтому передайте префаб-ссылку и присвойте результирующий экземпляр GameObject как дочерний элемент targetGameObject:

Object prefabReference = Resources.Load(My_File_Path);
GameObject gameObjectReference = Instantiate(prefabReference) as GameObject;
gameObjectReference.transform.parent = targetGameObject;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...