Страница 1 из 1

Экземпляр класса как компонент GameObject

СообщениеДобавлено: 14 мар 2017, 04:52
vave
Всем привет - столкнулся с проблемой...
Есть нестатический класс, который висит на объекте сцены, при создании нового объекта из префаба - хочу повесить новый ЭКЗЕМПЛЯР этого класса (с другими настройками) на только что созданный объект - а юнити говорит - мол этож не компонетн нифига... как быть?
пример:

Синтаксис:
Используется csharp
private MobClass targetScript;
//
void Start()
    {
              targetScript = new MobClass(counter, true, "LeftMob", mobMaterial, positionCreate, defaultTarget);
    }
//
  GameObject newMob = Instantiate(prefToInstance);
 newMob.AddComponent("targetScript") as ScriptableObject;


принципиально не хочу вешать скрипт на префаб напрямую - ибо если переделать слетят все линки на префабе...
на последней строчке ругается? и кто может нормально объяснить в чем разница - повесить скрипт на объект и экземпляр класса ? мб я просто не тем путем пошел ?
кто любит больше букофф: суть задачи - есть класс в котором впринципе все настройки для префаба моб... там определяется какой конкретно моб - с какой стороны, статы, поведение, кто противники... по сути неважно на каких мобов вешать... или надо отдельно для каждого типа ручками мисать?

Re: Экземпляр класса как компонент GameObject

СообщениеДобавлено: 14 мар 2017, 05:00
vave
думаю важно дополнить что у класса есть конструктор(с параметрами)

Re: Экземпляр класса как компонент GameObject

СообщениеДобавлено: 14 мар 2017, 10:15
samana
Насколько я помню, то ScriptableObject точно не является компонентом, поэтому его и нельзя повесить на объект сцены. Но вы можете в скрипте (MonoBehaviour) этого объекта создать свойство, которому и назначить этот ScriptableObject.
И ещё я не уверен, что ScriptableObject-ы вот так просто создаются, ведь создавать надо через https://docs.unity3d.com/ScriptReferenc ... tance.html

Re: Экземпляр класса как компонент GameObject

СообщениеДобавлено: 14 мар 2017, 10:26
vave
ну экземпляр сам по себе создается, мало того к нему можно обратиться по имени и запихать в делегат - вот только выловить и насадаить на инстанс объект ХЗ как(