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

как ЛУЧШЕ передать значение переменной ?

СообщениеДобавлено: 10 сен 2018, 16:06
kirya_355
возник вопрос связанный с оптимизацией игры , а именно игры на телефоны, как лучше передавать значения переменных , через PlayerPrefs или через GameObject.Find("Object2").GetComponent<script2>()."переменная"? Есть ли еще варианты передачи переменных?

Re: как ЛУЧШЕ передать значение переменной ?

СообщениеДобавлено: 10 сен 2018, 16:10
Anonymyx
Передавать откуда куда и зачем?

Кэшируете нужные компоненты в Awake() или Start() и через объект.переменная обращаетесь.

Re: как ЛУЧШЕ передать значение переменной ?

СообщениеДобавлено: 10 сен 2018, 21:55
kirya_355
Anonymyx писал(а):Передавать откуда куда и зачем?

Кэшируете нужные компоненты в Awake() или Start() и через объект.переменная обращаетесь.

Вау

Покажите как так сделать , но мне уже не подходит ваш метод , так как переменная меняется в ходе игры , т.е. нельзя 1 раз объявить и потом обращаться .(или можно?)
А передавать нужно в другой скрипт .

Re: как ЛУЧШЕ передать значение переменной ?

СообщениеДобавлено: 10 сен 2018, 22:40
AABB
Кэшировать ссылку на скрипт

Re: как ЛУЧШЕ передать значение переменной ?

СообщениеДобавлено: 11 сен 2018, 09:47
Friend123
Лень офф доки что-ль читать? Там есть ответы на 90% вопросов. И про кеширование там тоже есть.

Re: как ЛУЧШЕ передать значение переменной ?

СообщениеДобавлено: 11 сен 2018, 14:48
kirya_355
я так понимаю , вопрос вы не поняли , мне НЕ нужно оптимизировать скрипт , я спрашиваю как из 1 скрипта лучше передать переменнаю в другой скрипт , сейчас я это делаю с помощью PlayerPrefs , если вы знаете способ лучше напишите(скрипты в одной сцене находятся)

Re: как ЛУЧШЕ передать значение переменной ?

СообщениеДобавлено: 11 сен 2018, 15:53
1max1
возник вопрос связанный с оптимизацией игры

мне НЕ нужно оптимизировать скрипт

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

Пример глобальной переменной:
Синтаксис:
Используется csharp
// script1
public static int totalScore;

// script2 (обращение)
script1.totalScore += 10;
 


Пример НЕ глобальной переменной:
Синтаксис:
Используется csharp
// script1
public int totalScore;

// script2 (кеш + обращение)
script1 scr1;

void Start()
{
    scr1 = GameObject.Find("Object1").GetComponent<script1>();
}

void Update()
{
    scr1.totalScore += 10;
}