forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Уроки (http://forum.boolean.name/forumdisplay.php?f=145)
-   -   Глобалы в Unity3D (http://forum.boolean.name/showthread.php?t=13059)

den 02.08.2010 22:21

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

1) Мне его рах подсказал:)
Создаём JS и называем его например Global
А в нутри пишем следующее.
PHP код:

static var boolean true;
static var 
b=100;
static var 
c="bladg"

ну вобщем обычные переменные, только перед каждым объявлением надо писать слово static
Оброщаца так
PHP код:

Global.a

или
PHP код:

Global.b

или
PHP код:

Global.c

И это вернёт вам переменную. Вобщем сначало название скрипта (а на самом деле название класса. прсто в юнити JS содержится тот клас, как его обозвали) а потом название переменной.
2) Я его в примере каком то нарыл. Это не совсем глобальная переменная, но очень помогает.
например у нас есть ГО car , тогда в скрипте пишем
PHP код:

car.SendMessage("SetBla"24); 

но перед этим как нибуть объявить ГО car, ну например так:
PHP код:

var car:Transform

и выбрать его ручками, или так:
PHP код:

car GameObject.Find("car"); 

ну вобщем как хотите.
SetBla -это название новой функции, пишите что угодно.
24 - это любая переменная, любого класса, можно даже так написать:
PHP код:

car.SendMessage("SetBla"transform); 

А как принемать? Вот как!
В ГО car (именно ей мы послали сообщение) в скрипте пишем
PHP код:

function SetBla (t)
{
    
obj t;


или
PHP код:

function SetBla (t:Transform)
{
    
obj t;


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

Вот и всё!:)

Nuprahtor 02.08.2010 23:08

Ответ: Глобалы в Unity3D
 
Хм, я всегда к static в JavaScipt обращался так.
Скрипт scr_glbl
PHP код:

static var variable_hp 10

Обращаюсь из других скриптов:
PHP код:

scr_glbl.variable_hp scr_glbl.variable_hp+1.0


den 02.08.2010 23:20

Ответ: Глобалы в Unity3D
 
Цитата:

Сообщение от Капитан очевидность (Сообщение 157027)
Хм, я всегда к static в JavaScipt обращался так.
Скрипт scr_glbl
PHP код:

static var variable_hp 10

Обращаюсь из других скриптов:
PHP код:

scr_glbl.variable_hp scr_glbl.variable_hp+1.0


А я как показал!?:)
Если ты намекаеш на то что глобольные переменные можно изменять, то это же очевидно!:-D
---------
PHP код:

scr_glbl.variable_hp scr_glbl.variable_hp+1.0

хм, а я обычно делаю так
PHP код:

scr_glbl.variable_hp += 1.0


Nuprahtor 02.08.2010 23:24

Ответ: Глобалы в Unity3D
 
Точно, подсветка Global меня смутила:)

pax 03.08.2010 10:29

Ответ: Глобалы в Unity3D
 
Небольшой совет на будущее: глобальные переменные это зло, старайтесь ими пользоваться только тогда, когда в этом действительно есть необходимость.

gnoblin 10.08.2010 02:13

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

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

public class Global : MonoBehaviour
{
public static Global singleton;

void Awake()
{
singleton = this;
}

public int someVariable;
}

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


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot