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

Преременные

СообщениеДобавлено: 09 авг 2009, 15:16
JenyaHW
Подскажите почему иногда скрипты не могут получить данные от другого скрипта (в первом например задается static var per : float = 5, а в другом скрипте запрос типа per.название первого скрипта)?

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 15:58
Neodrop
Чтобы получить переменную из другого скрипта, вам сперва нужно получить ссылку на сам этот скрипт.
Примеры реализации чётко представлены в 3D Platformer Tutorial из раздела Уроки.

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 20:37
JenyaHW
Neodrop писал(а):Чтобы получить переменную из другого скрипта, вам сперва нужно получить ссылку на сам этот скрипт.
Примеры реализации чётко представлены в 3D Platformer Tutorial из раздела Уроки.


Жаль что ответы.. такие... (скажите как пройти на улицу Громова?... видите ларек, там продают карты... изучите карту там все есть...) (спаибо).

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 20:41
JenyaHW
Цлый день кручу эти уроки так и не понял... в чем проблема.... отчаялся... поэтому и спросил... : (дело в том что они на английском и быстро ничего не найти.... (из за ерунды целый день убил переписывая скрипты туда сюда... ))

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 20:54
Neodrop
Пля, ну слов нет.... Одни нехорошие выражения просятся на язык.
Специяльно для тех, кто ничего не понимает в буржуинском языке, камрады из нашего сообщества, написали перевод туториала, который тоже можно найти в разделе Уроки вот тут: viewtopic.php?f=11&t=430.

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 21:00
JenyaHW
Neodrop писал(а):Пля, ну слов нет.... Одни нехорошие выражения просятся на язык.
Специяльно для тех, кто ничего не понимает в буржуинском языке, камрады из нашего сообщества, написали перевод туториала, который тоже можно найти в разделе Уроки вот тут: viewtopic.php?f=11&t=430.

Ок ... больше вопросов не будет... (сам разберусь!)
перевод закончен на 30 странице... всего более 90 страниц...
(да и переведу сам...) (сами год назад начинали.. и я думаю ой как не хватало, чтобы кто-то подсказал...)
(типа мы мучались... а теперь и вы... изучайте...) (да не проблема...)

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 21:02
Neodrop
Изучение программирования без знания буржуинского языка (англицкого) вообще дохлое занятие, камрад мой. :-?

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 21:08
JenyaHW
Neodrop писал(а):Изучение программирования без знания буржуинского языка (англицкого) вообще дохлое занятие, камрад мой. :-?

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

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 21:14
Neodrop
Чтобы получить переменную из скрипта SkripA в ScriptB :

В ScriptA создаём публичную переменную :

Код: Выделить всё
var mySource;


В скрипте ScriptB пишем :

Код: Выделить всё
var scriptB : ScriptB;
function Start()
{
     scriptB = GameObject.FindObjectOfType(ScriptB);
}

function Update()
{
     var myLovelyVar = scriptB.mySource;
}


Но это вам СОВСЕМ не поможет, потому что есть тысяча вариантов, когда этот код или не будет работать, или выдаст некорректные данные. Мне выложить тут все мои знания? Вы сможете их впитать? В каком виде тогда мне это сделать? :-?

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 21:23
JenyaHW
var position : Rect;
var crosshairTexture : Texture2D;
private var status : vistrel; // vistrel - другой скрипт в этой же сцене... speedpaleta - переменная в нем.... ни как не могу ее получить... хотя пока писал... понял ошибку....
var strongcross : Texture2D;
var positionstrong : Rect;

function Start()
{

Код: Выделить всё
status = GameObject.FindObjectOfType(Vistrel);

А еще принято скрипты называть с большой буквы.

    position = Rect( ( Screen.width - crosshairTexture.width ) / 2, ( Screen.height -crosshairTexture.height ) / 2, crosshairTexture.width, crosshairTexture.height );
    positionstrong = Rect ( ( Screen.width - 30 )/2, ( Screen.height + 60 )/2, status.speedpaleta, 5 );
    }

    function OnGUI()
    {
    if (vistrel.vistrel == true){
    GUI.DrawTexture( position, crosshairTexture );
    GUI.DrawTexture ( positionstrong, strongcross );
    }
    }

Если сможете подскажите что не так...

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 21:25
JenyaHW
извиняюс... ступил!!!
Update нужно а не старт

Re: Преременные

СообщениеДобавлено: 09 авг 2009, 21:34
JenyaHW
Neodrop писал(а):Чтобы получить переменную из скрипта SkripA в ScriptB :
Но это вам СОВСЕМ не поможет, потому что есть тысяча вариантов, когда этот код или не будет работать, или выдаст некорректные данные. Мне выложить тут все мои знания? Вы сможете их впитать? В каком виде тогда мне это сделать? :-?

Впитать могу... все... :) (да не нужно ничего выкладывать...) :)

Re: Преременные

СообщениеДобавлено: 10 авг 2009, 11:40
PavelCrow
а вот у меня что-то не вышло.. я передавал всегда переменные в другие скрипты другим образом, а в приведенном примере выше, увидел вариант гораздо проще, научите пожалуйста этим.

Вот у меня два скрипта, один такой (scr1):
Код: Выделить всё
var test1 : int;

function Update () {
test1 = 10;
}


второй такой (scr2):
Код: Выделить всё
private var script1 : scr1;
var test2;


function Update () {
test2 = script1.test1;
}


и пока не получается во втором скрипте получить значение из первого script1.test1, выдает ошибку
NullReferenceException: Object reference not set to an instance of an object
scr2.Update () (at Assets\script\scr2.js:5)

не подскажете, где ошибка?


function Start()
{
script1 = GameObject.FindObjectOfType(Scr1);
// скрипты\классы принято называть с большой буквы
}

Re: Преременные

СообщениеДобавлено: 10 авг 2009, 12:00
JenyaHW
а способ задать переменную в первом скрипте:
static var test1 : int;
не проходит
и тогда второй скрипт должен получать эту переменную без дополнительного кода... (но работает не всегда...)

static var test1 : int;
так ты задаешь переменную для всего класса, а не уникальную для каждого объекта.
и к ней доступ можно получить через ИмяКласса.test1 в любом другом скрипет.

Re: Преременные

СообщениеДобавлено: 10 авг 2009, 12:04
gnoblin
Ребята, прочитай внимательно еще раз последний пост Неодропа.

:-t