Преременные

Общие вопросы о Unity3D

Преременные

Сообщение JenyaHW 09 авг 2009, 15:16

Подскажите почему иногда скрипты не могут получить данные от другого скрипта (в первом например задается static var per : float = 5, а в другом скрипте запрос типа per.название первого скрипта)?
Магазин 3Д моделей. vscor.com/3Dmodels.php
JenyaHW
UNITрон
 
Сообщения: 243
Зарегистрирован: 18 июл 2009, 18:17

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

Сообщение Neodrop 09 авг 2009, 15:58

Чтобы получить переменную из другого скрипта, вам сперва нужно получить ссылку на сам этот скрипт.
Примеры реализации чётко представлены в 3D Platformer Tutorial из раздела Уроки.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

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

Сообщение JenyaHW 09 авг 2009, 20:37

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


Жаль что ответы.. такие... (скажите как пройти на улицу Громова?... видите ларек, там продают карты... изучите карту там все есть...) (спаибо).
Магазин 3Д моделей. vscor.com/3Dmodels.php
JenyaHW
UNITрон
 
Сообщения: 243
Зарегистрирован: 18 июл 2009, 18:17

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

Сообщение JenyaHW 09 авг 2009, 20:41

Цлый день кручу эти уроки так и не понял... в чем проблема.... отчаялся... поэтому и спросил... : (дело в том что они на английском и быстро ничего не найти.... (из за ерунды целый день убил переписывая скрипты туда сюда... ))
Магазин 3Д моделей. vscor.com/3Dmodels.php
JenyaHW
UNITрон
 
Сообщения: 243
Зарегистрирован: 18 июл 2009, 18:17

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

Сообщение Neodrop 09 авг 2009, 20:54

Пля, ну слов нет.... Одни нехорошие выражения просятся на язык.
Специяльно для тех, кто ничего не понимает в буржуинском языке, камрады из нашего сообщества, написали перевод туториала, который тоже можно найти в разделе Уроки вот тут: viewtopic.php?f=11&t=430.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

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

Сообщение JenyaHW 09 авг 2009, 21:00

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

Ок ... больше вопросов не будет... (сам разберусь!)
перевод закончен на 30 странице... всего более 90 страниц...
(да и переведу сам...) (сами год назад начинали.. и я думаю ой как не хватало, чтобы кто-то подсказал...)
(типа мы мучались... а теперь и вы... изучайте...) (да не проблема...)
Магазин 3Д моделей. vscor.com/3Dmodels.php
JenyaHW
UNITрон
 
Сообщения: 243
Зарегистрирован: 18 июл 2009, 18:17

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

Сообщение Neodrop 09 авг 2009, 21:02

Изучение программирования без знания буржуинского языка (англицкого) вообще дохлое занятие, камрад мой. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

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

Сообщение JenyaHW 09 авг 2009, 21:08

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

да я просто хотел подсказки... это же всего одна строка... кода... (а вы на уроки отправляете...). с английским (согласен) ну я не совсем... то не разбераюсь.. скажем не так как хотелось бы... просто времени много отнимет поиск... (и уж никак я не хотел кого-то обидеть, цель была получить ответ)
:)
Магазин 3Д моделей. vscor.com/3Dmodels.php
JenyaHW
UNITрон
 
Сообщения: 243
Зарегистрирован: 18 июл 2009, 18:17

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

Сообщение Neodrop 09 авг 2009, 21:14

Чтобы получить переменную из скрипта SkripA в ScriptB :

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

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


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

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

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


Но это вам СОВСЕМ не поможет, потому что есть тысяча вариантов, когда этот код или не будет работать, или выдаст некорректные данные. Мне выложить тут все мои знания? Вы сможете их впитать? В каком виде тогда мне это сделать? :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

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

Сообщение JenyaHW 09 авг 2009, 21:23

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 );
    }
    }

Если сможете подскажите что не так...
Магазин 3Д моделей. vscor.com/3Dmodels.php
JenyaHW
UNITрон
 
Сообщения: 243
Зарегистрирован: 18 июл 2009, 18:17

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

Сообщение JenyaHW 09 авг 2009, 21:25

извиняюс... ступил!!!
Update нужно а не старт
Магазин 3Д моделей. vscor.com/3Dmodels.php
JenyaHW
UNITрон
 
Сообщения: 243
Зарегистрирован: 18 июл 2009, 18:17

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

Сообщение JenyaHW 09 авг 2009, 21:34

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

Впитать могу... все... :) (да не нужно ничего выкладывать...) :)
Магазин 3Д моделей. vscor.com/3Dmodels.php
JenyaHW
UNITрон
 
Сообщения: 243
Зарегистрирован: 18 июл 2009, 18:17

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

Сообщение PavelCrow 10 авг 2009, 11:40

а вот у меня что-то не вышло.. я передавал всегда переменные в другие скрипты другим образом, а в приведенном примере выше, увидел вариант гораздо проще, научите пожалуйста этим.

Вот у меня два скрипта, один такой (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);
// скрипты\классы принято называть с большой буквы
}
PavelCrow
UNец
 
Сообщения: 25
Зарегистрирован: 21 май 2009, 10:10

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

Сообщение JenyaHW 10 авг 2009, 12:00

а способ задать переменную в первом скрипте:
static var test1 : int;
не проходит
и тогда второй скрипт должен получать эту переменную без дополнительного кода... (но работает не всегда...)

static var test1 : int;
так ты задаешь переменную для всего класса, а не уникальную для каждого объекта.
и к ней доступ можно получить через ИмяКласса.test1 в любом другом скрипет.
Магазин 3Д моделей. vscor.com/3Dmodels.php
JenyaHW
UNITрон
 
Сообщения: 243
Зарегистрирован: 18 июл 2009, 18:17

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

Сообщение gnoblin 10 авг 2009, 12:04

Ребята, прочитай внимательно еще раз последний пост Неодропа.

:-t
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

След.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot], Google [Bot] и гости: 22