2015-12-26 4 views
1

Для контекста я создал экземпляр нескольких GameObjects со временем, которые представляют оценку в моей игре. Я знаю, как изменить позицию, в которой они созданы.Доступ к экземпляру ресурсов из другого скрипта C#

string scoreText = score.ToString(); 

for (int i = 0; i < scoreText.Length; i++) 
    { 
var go = (GameObject)Instantiate(Resources.Load(scoreText[i].ToString())); 

go.transform.localPosition = new Vector3(0.02F + i * 0.01F, 0.13F, 0); 
} 

То, что я не знаю, как это изменить, заключается в изменении позиции в другом скрипте. Опять же, для контекста, в Game Over в другом скрипте, я хочу изменить положение этих объектов, которые я создал.

Я пробовал несколько вариантов GetComponent и GameObject. Я не могу привязать один GameObject, к которому я хочу получить доступ, потому что это несколько, когда-либо изменяющихся GameObjects. Я чувствую, что я не смотрю на это правильно. Кто-нибудь знает как это сделать?

ответ

1

Ну, один из способов сделать это, чтобы ваша переменная GameObject прошла переменную класса, чтобы вы могли получить к ней доступ в других методах. Но если вы создадите множество объектов, вы можете создать массив GameObjects, а затем перебрать их, чтобы найти тот, который вам нужен. Вы можете сделать массив общедоступной переменной, чтобы другие скрипты могли смотреть на нее.

0

Другие сценарии могут получить доступ к данным вашего сценария, который public и static, поэтому первый шаг должен создать переменную, которая будет хранить ваш счет в главном скрипте:

public static GameObject[] Score; 

Во время инициализации, использовать этот переменный, чтобы сохранить счет:

string scoreText = score.ToString(); 

Score = new GameObject[scoreText.Length]; 

for (int i = 0; i < scoreText.Length; i++) 
{ 
    Score[i] = (GameObject)Instantiate(Resources.Load(scoreText[i].ToString())); 
    Score[i].transform.localPosition = new Vector3(0.02F + i * 0.01F, 0.13F, 0); 
} 

на данный момент в игре над сценарием, вы должны быть в состоянии использовать данные оценки от основного сценария (если это не работает, убедитесь, что вы используя правильные пространства имен и r eferences, но если два сценария в одном проекте не должно быть никаких проблем):

MainScript.Score //MainScript is the name of your main script 

Если вы хотите перебрать счет в игре по сценарию:

for (int i = 0; i < MainScript.Score.Length; i++) 
{ 
    MainScript.Score[i] = do something here... 
} 
Смежные вопросы