2015-11-24 3 views
1

Как добавить переменную в GameObject? GameObjects имеет ряд переменных (имя, преобразование, ...), к которым можно получить доступ и изменить их из любого скрипта. Как я могу добавить переменную, такую ​​как, например, «цвет» или «тип», к которой можно было получить доступ или изменить их из других сценариев. Спасибо.Unity3D/C# - добавить переменную в gameobject

+0

просто сделайте свои переменные общедоступными и добавьте ссылку на ваш gameObject. –

+0

Не могли бы вы привести мне пример? Я не уверен, что понимаю (я новичок в C#) Спасибо – cubecube

+0

, добавив пример ... –

ответ

2

Если 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.

+0

спасибо, пытаясь объявить класс, который наследует от GameObject, дает мне ошибку: «error CS0509:« ExtraGameObject »: невозможно получить из закрытого введите 'UnityEngine.GameObject '. Я думаю, что, как говорит Сет, переменная не может быть добавлена ​​в GameObject. – cubecube

+0

@cubecube Я не знал об этом :(Я думаю, что мое обновленное сообщение может предоставить вам решение. – Christos

+0

Спасибо Christos, я на самом деле пытаюсь найти другой способ добиться того, что мне нужно (я новичок в C#). Я не уверен, ясно ли это: если я создаю экземпляр GameObject и присоединяю к нему сценарий (с помощью AddComponent), как я могу прочитать переменные этого прикрепленного скрипта из другого сценария? – cubecube

0

Ответ Christos правильный. Вы не можете добавить переменную в тип данных GameObject, потому что она была встроена в язык в качестве базы. Чтобы добавить переменные к готовому типу данных, откройте их. Для получения дополнительной информации о наследовании см

https://msdn.microsoft.com/library/ms173149(v=vs.100).aspx

+0

спасибо Сет, я слишком новичок, чтобы попасть в добавив переменные к готовому типу данных, я думаю. Мне нужно некоторое время, чтобы понять, но я попробую :) спасибо – cubecube

1

Как и каждый объект в C# класс класс GameObject наследование объектов. Если вы щелкните правой кнопкой мыши на GameObject и выберите перейти к определению, вы увидите это ниже. enter image description here

Для достижения переменных одного объекта вам нужна ссылка (не считая статических переменных). Поэтому, если вы хотите изменить переменные одного GameObject из другого, вам понадобится ref. enter image description here В инспекторе Unity вы можете присваивать значения общедоступным переменным скрипта. Ниже вы можете увидеть Obj конец стрелки. Теперь присвойте кубу (является GameObject) в Obj. enter image description here После перетаскивания

enter image description here

Теперь вы можете достичь любой подкомпонентой объекта куба. В красном прямоугольнике я достиг своего компонента Transform и изменил его положение. enter image description here

Надеюсь, я понял ваш вопрос правильно.GL.

+0

Спасибо Бурак за отличный ответ! Я зашел так далеко и понял этот принцип, который вы объясняете.(надеюсь, это поможет другим людям, читающим эту тему :)) мой вопрос: как добавить новую переменную в GameObject. В GameObject есть набор компонентов, таких как Transform, Name и другие. Теперь мне было интересно, можно ли добавить компонент, такой как цвет или дата или что-то еще. Но, похоже, другие люди ответили, что это сложно. Seth bellow опубликовал ссылку, но для меня это слишком сложно прямо сейчас. – cubecube

+0

Спасибо. Я прочел в Интернете по вашему вопросу после прочтения вашего комментария. Интересный вопрос. Сначала я просмотрел интернет о добавлении специального компонента, которого я не мог найти, чтобы, возможно, даже если он существует, это не общий вопрос. В unity3d я унаследовал класс от компонента и программным образом добавлен в один из моих игр. Но это воспринималось как сценарий. Будем искать больше, я думаю, что это о структуре Unity. –

+0

Burak, спасибо за поиск, я тоже искал какое-то время, не нашел много, поэтому я разместил этот вопрос. Я задал производные вопросы с некоторым кодом, который мог бы быть альтернативным способом получить то, что я хочу, посмотреть PLS: http://stackoverflow.com/questions/33906741/access-dynamically-added-component-in-unity3d- с-острый/33906910 # 33906910 – cubecube

Смежные вопросы