Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Уроки

Ответ
 
Опции темы
Старый 02.08.2010, 22:21   #1
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Сообщение Глобалы в Unity3D

Вот сейчас буду расказывать о глобальных (и почти) переменных. Ногами не пинать.
Этто тема меня давно волновала, поэтому я узнал о двух способах:

1) Мне его рах подсказал
Создаём JS и называем его например Global
А в нутри пишем следующее.
static var boolean true;
static var 
b=100;
static var 
c="bladg"
ну вобщем обычные переменные, только перед каждым объявлением надо писать слово static
Оброщаца так
Global.a
или
Global.b
или
Global.c
И это вернёт вам переменную. Вобщем сначало название скрипта (а на самом деле название класса. прсто в юнити JS содержится тот клас, как его обозвали) а потом название переменной.
2) Я его в примере каком то нарыл. Это не совсем глобальная переменная, но очень помогает.
например у нас есть ГО car , тогда в скрипте пишем
car.SendMessage("SetBla"24); 
но перед этим как нибуть объявить ГО car, ну например так:
var car:Transform
и выбрать его ручками, или так:
car GameObject.Find("car"); 
ну вобщем как хотите.
SetBla -это название новой функции, пишите что угодно.
24 - это любая переменная, любого класса, можно даже так написать:
car.SendMessage("SetBla"transform); 
А как принемать? Вот как!
В ГО car (именно ей мы послали сообщение) в скрипте пишем
function SetBla (t)
{
    
obj t;

или
function SetBla (t:Transform)
{
    
obj t;

тогда переменная obj примет то что мы ей передовали (24 или transform).

Вот и всё!
(Offline)
 
Ответить с цитированием
Старый 02.08.2010, 23:08   #2
Nuprahtor
Элита
 
Аватар для Nuprahtor
 
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений
(для 3,923 пользователей)
Ответ: Глобалы в Unity3D

Хм, я всегда к static в JavaScipt обращался так.
Скрипт scr_glbl
static var variable_hp 10
Обращаюсь из других скриптов:
scr_glbl.variable_hp scr_glbl.variable_hp+1.0
(Offline)
 
Ответить с цитированием
Старый 02.08.2010, 23:20   #3
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Лампочка Ответ: Глобалы в Unity3D

Сообщение от Капитан очевидность Посмотреть сообщение
Хм, я всегда к static в JavaScipt обращался так.
Скрипт scr_glbl
static var variable_hp 10
Обращаюсь из других скриптов:
scr_glbl.variable_hp scr_glbl.variable_hp+1.0
А я как показал!?
Если ты намекаеш на то что глобольные переменные можно изменять, то это же очевидно!
---------
scr_glbl.variable_hp scr_glbl.variable_hp+1.0
хм, а я обычно делаю так
scr_glbl.variable_hp += 1.0
(Offline)
 
Ответить с цитированием
Старый 02.08.2010, 23:24   #4
Nuprahtor
Элита
 
Аватар для Nuprahtor
 
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений
(для 3,923 пользователей)
Ответ: Глобалы в Unity3D

Точно, подсветка Global меня смутила
(Offline)
 
Ответить с цитированием
Старый 03.08.2010, 10:29   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Глобалы в Unity3D

Небольшой совет на будущее: глобальные переменные это зло, старайтесь ими пользоваться только тогда, когда в этом действительно есть необходимость.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (09.08.2010)
Старый 10.08.2010, 02:13   #6
gnoblin
AnyKey`щик
 
Регистрация: 19.07.2010
Сообщений: 7
Написано одно полезное сообщение
(для 6 участников)
Ответ: Глобалы в Unity3D

Согласен, что статические переменные это не всегда корошо).

Можно делать так:

public class Global : MonoBehaviour
{
public static Global singleton;

void Awake()
{
singleton = this;
}

public int someVariable;
}

потом из любого кода можно обратиться к переменным в скрипте Global, который висит в сцене как Global.singleton.someVariable
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 15:57.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com