Как я могу добавить переменную в GameObject? GameObjects имеет ряд переменных (имя, преобразование, ...), доступ к которым и изменение которых можно получить из любого скрипта. Как я могу добавить переменную, такую как, например, «цвет» или «тип», к которой можно было бы получить доступ или изменить ее из других сценариев. Спасибо.
Unity3D/C# — добавить переменную в игровой объект
Ответы (3)
Если бы GameObject
не был запечатанным классом, то наследование могло бы стать решением вашей проблемы. В этой идеальной ситуации вы можете попробовать следующее.
public class ExtraGameObject : GameObject
{
// Logically you could make use of an enum for the
// color but I picked the string to write this example faster.
public string Color { get; set; }
}
Решением вашей проблемы может быть объявление вашего класса, как показано ниже:
public class ExtraGameObject
{
public string Color { get; set; }
public GameObject GameObject { get; set; }
}
Я знаю об этом, что это не совсем то, что вы хотите, но то, что вы хотите, я не думаю, что это можно сделать из-за запечатанной природы GameObject
.
ExtraGameObject': cannot derive from sealed type
UnityEngine.GameObject'. Я думаю, как Сет говорит, что переменная не может быть добавлена к GameObject.
- person cubecube; 25.11.2015
Как и каждый объект в С#, наследование класса GameObject Класс объекта. Если вы щелкните правой кнопкой мыши на GameObject и выберите «Перейти к определению», вы увидите это ниже.
Чтобы получить доступ к переменным одного объекта, вам нужна ссылка (не учитывая статические переменные). Поэтому, если вы хотите изменить переменные одного GameObject с другого, вам нужна ссылка. В инспекторе Unity вы можете присваивать значения публичным переменным скрипта. Ниже вы можете увидеть конец стрелки Obj. Теперь назначьте куб (это GameObject ) объекту Obj. После перетаскивания
Теперь вы можете получить доступ к каждому подкомпоненту объекта куба. В красном прямоугольнике я добрался до компонента Transform и изменил его положение.
Надеюсь, я правильно понял ваш вопрос. ГЛ.
Кристос ответил правильно. Вы не можете добавить переменную в тип данных GameObject, потому что он был встроен в язык в качестве основы. Чтобы добавить переменные в готовый тип данных, расширьте их. Дополнительную информацию о наследовании см.
https://msdn.microsoft.com/library/ms173149(v=vs.100).aspx