непонятная ошибка в работающем коде.

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

непонятная ошибка в работающем коде.

Сообщение VitaMin00 07 ноя 2013, 10:47

Всем привет. можете обьяснить, что за желтая ошибка? Вроде делаю всё, как надо...
Синтаксис:
Используется csharp
public class Script_1 : MonoBehaviour {
        public int a = 1;
}
 

Синтаксис:
Используется csharp
public class Script_2 : MonoBehaviour {
        void Start(){
                Script_1 s1 = new Script_1();
                s1.a = 4;
        }
}
 

Всё работает, переменная меняется, но выдаётся такое:
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
Script_1:.ctor()
Script_2:Start() (at Assets/Scripts/Script_2.cs:7)

В чём дело?
VitaMin00
UNITрон
 
Сообщения: 187
Зарегистрирован: 12 мар 2012, 19:54

Re: непонятная ошибка в работающем коде.

Сообщение 2rusbekov 07 ноя 2013, 10:49

Не наследуй MonoBehaviour в Script_1
Still alive...
Аватара пользователя
2rusbekov
Адепт
 
Сообщения: 1409
Зарегистрирован: 06 апр 2012, 12:57
Откуда: Бишкек

Re: непонятная ошибка в работающем коде.

Сообщение VitaMin00 07 ноя 2013, 11:01

Спасибо.
VitaMin00
UNITрон
 
Сообщения: 187
Зарегистрирован: 12 мар 2012, 19:54

Re: непонятная ошибка в работающем коде.

Сообщение porcha 07 ноя 2013, 16:38

и что дальше ты будешь делать со скриптом?
С помощью new ты представляешь его как обычный класс, а чтобы он работал тебе придется добавить его на объект, и тогда это будет обычнейшая ссылка на компонент, так что ты изобрел даже не велосипед, а колесо.
GameDev Проект
porcha
UNITрон
 
Сообщения: 188
Зарегистрирован: 28 мар 2013, 19:47

Re: непонятная ошибка в работающем коде.

Сообщение BenjaminMoore 07 ноя 2013, 16:47

его не нужно добавлять на объект, чтобы он работал
не вводите людей в заблуждение
My hands are hard. My mind is core.
ring0x0000 c0x0063 | write code in rust right now
Аватара пользователя
BenjaminMoore
UNITрон
 
Сообщения: 338
Зарегистрирован: 03 янв 2013, 18:07
Skype: benjminmoore

Re: непонятная ошибка в работающем коде.

Сообщение porcha 07 ноя 2013, 16:58

^
что?
Синтаксис:
Используется javascript
public class SomeMonoClass extends MonoBehaviour {
 
 function Start() {
  Debug.LogError("Some mono started");
 }
 
}

public class OnObjectMono extends MonoBehaviour {
  public var ss:SomeMonoClass ;

 function Start() {
  ss = new SomeMonoClass();
 }

}

Если кинуть OnObjectMono на объект в старте он создаст экземпляр SomeMonoClass но метод старт в SomeMonoClass почему то не сработает.
GameDev Проект
porcha
UNITрон
 
Сообщения: 188
Зарегистрирован: 28 мар 2013, 19:47

Re: непонятная ошибка в работающем коде.

Сообщение seaman 07 ноя 2013, 20:05

почему то не сработает.

Потому что скрипты, унаследованные от MonoBehaviour НЕЛЬЗЯ создавать new. МОЖНО создавать AddComponent
Ну а Script_1, в котором не используется ничего из MonoBehaviour, естественно не наследовать от него
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: непонятная ошибка в работающем коде.

Сообщение porcha 07 ноя 2013, 23:53

porcha писал(а):и что дальше ты будешь делать со скриптом?
С помощью new ты представляешь его как обычный класс, а чтобы он работал тебе придется добавить его на объект, и тогда это будет обычнейшая ссылка на компонент, так что ты изобрел даже не велосипед, а колесо.

ну как бы я это и писал уже
Потому что скрипты, унаследованные от MonoBehaviour НЕЛЬЗЯ создавать new. МОЖНО создавать AddComponent
GameDev Проект
porcha
UNITрон
 
Сообщения: 188
Зарегистрирован: 28 мар 2013, 19:47

Re: непонятная ошибка в работающем коде.

Сообщение VitaMin00 08 ноя 2013, 06:24

А можно пример с AddComponent?
VitaMin00
UNITрон
 
Сообщения: 187
Зарегистрирован: 12 мар 2012, 19:54

Re: непонятная ошибка в работающем коде.

Сообщение ShyRec 08 ноя 2013, 07:05

В (c#) вот так:

Синтаксис:
Используется csharp
nameOfGameObject.AddComponent<nameOfComponent> ();
//Это для того, чтобы добавить скрипт на объект. Можно сделать это не из кода, а в редакторе
//name of game object - названия объекта, на который нужно повесить скрипт
//nameOfComponent - в нашем случае название скрипта
 


Синтаксис:
Используется csharp
nameOfComponent objectName = nameOfGameObject.GetComponent<nameOfComponent> ();
//это для получение. То есть создаём экземпляр класса (объект) таким образом, если скрипт унаследован от MonoBehaivour.
 


Если скрипт не унаследован от Моно, то создаём обычным new.

Синтаксис:
Используется csharp
nameOfScript objectName = new nameOfScript ();
 


http://docs.unity3d.com/Documentation/S ... onent.html
http://docs.unity3d.com/Documentation/S ... onent.html
Alien West
Изображение
ShyRec
UNIт
 
Сообщения: 140
Зарегистрирован: 23 май 2013, 13:02
Откуда: Астрахань


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 16