получить доступ к другому сценарию из FirstPersonController

Извините за мой английский!

У меня есть скрипты под названием "MYJoystick.cs":

 public class MYJoystick : MonoBehaviour 
 {
     public static string myX;
 }

и я хочу получить доступ к «myX» из «FirstPersonController.cs» в единстве 5. Я хочу написать это в обновлении в FirstPersonController Вот так:

 private void Update()
 {
      MYJoystick.myX += 1;
 }

но он говорит: "Имя `MYJoystick' не существует в текущем контексте".

Как я могу это исправить? я должен добавить Использование в FirstPersonController? используя что? какое пространство имен по умолчанию в единстве? Я также пытался добавить пространство имен для своего скрипта, но это тоже не сработало!


person ALI PAKKHOO    schedule 24.03.2016    source источник
comment
Хм... у вас есть определение класса для MYJoystick внутри другого пространства имен?   -  person Serlite    schedule 24.03.2016
comment
Возможно, вам нужно изменить строку на int и установить ее на 0 в бодрствующем состоянии.   -  person tim    schedule 25.03.2016


Ответы (1)


У меня только что была эта проблема.

http://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html

Основное правило заключается в том, что на все, что будет компилироваться в фазе после текущей, нельзя ссылаться. Этапы компиляции следующие:

Этап 1: Сценарии среды выполнения в папках с именами Standard Assets, Pro Standard Assets и Plugins.

Фаза 2: Сценарии редактора в папках с именем Editor, которые находятся в любом месте внутри папок верхнего уровня, называемых Standard Assets, Pro Standard Assets и Plugins.

Этап 3: Все остальные сценарии, которые не находятся в папке с именем Editor.

Фаза 4: Все оставшиеся скрипты (т.е. те, что находятся в папке Editor).

Ваш скрипт FPSController c# находится в стандартной папке ресурсов, он скомпилирован до ваших других пользовательских скриптов c#, ​​которые находятся в другой папке.

Чтобы исправить это, вы можете переименовать «Стандартные активы» в другое имя, или поместить эту папку в другую папку, или взять скрипт FPSController и поместить его с другими вашими скриптами. Лучшим решением было бы скопировать сценарий стандартных активов FPSController и поместить его в свою настраиваемую папку, а затем изменить этот сценарий вместо этого.

Я попытался изменить порядок компиляции скриптов как лучшее решение, но, похоже, это не сработало. Это только для времени выполнения с Start() и Awake(), я думаю, между сценариями.

person Martin Dawson    schedule 25.03.2016