2016-01-24 3 views
0

Итак, я пытался инициализировать переменные и помещать несколько глобальных переменных в свой Unity-скрипт, но когда я запускаю код, он говорит, что x, y и z являются неизвестными идентификаторами. Я пытался найти ответ на этот вопрос:Почему глобальная переменная (внутри функции) не идентифицирована?

function Awake() { 
    x = 0; //Unity doesn't work with commas 
    y = 0; 
    z = 0; 
} 

function Update() { 
    if (Input.GetTouch) { 
     x = x-1; 
    } 
    Transform.position = Vector3(x,y,z); 
} 

Дело с вводом переменных вне функции является то, что они будут повторяться и действовать в качестве обновления.

Я также новичок в Unity и JavaScript.

+2

Вы уверены, что 'Awake' вызывается перед обновлением? В противном случае x, y, z не будут определены. –

+2

в вашем случае ... 'x, y, z' не являются глобальными переменными. Это локальные переменные функции 'Awake'. Если вы хотите сделать его глобальным, возьмите его за пределы всех функций. – mestarted

+0

@mestarted это неверно. При объявлении + инициализации переменной без ключевого слова 'var' или' let' для ES6 + переменная автоматически присоединяется к глобальному пространству имен ('window' в браузерах,' global' в node.js) –

ответ

3

Мне кажется (предоставляется с ограниченным доступом к единству), так как вам нужно объявить свои переменные на глобальном уровне. Попробуйте сделать что-то вроде этого:

// declare these variables in the global scope. 
var x; 
var y; 
var z; 

function Awake() { 
    x = 0; 
    y = 0; 
    z = 0; 
} 

function Update() { 
    if (Input.GetTouch) { 
     x = x-1; 
    } 
    Transform.position = Vector3(x,y,z); 
} 
+0

Спасибо, все здесь работало после того, как я исправил эту ошибку. Я не мог использовать запятые, потому что, видимо, у Unity этого не было. –

+0

Полезно знать - я обновил свой ответ, чтобы отразить это :) – winhowes

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