Взаимодействие скриптов - Форум Игроделов
Пн, 20 Май 2024, 02:31 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » HELP & FAQ » Взаимодействие скриптов
Взаимодействие скриптов
HeadLinerДата: Чт, 29 Авг 2013, 19:39 | Сообщение # 1
Нет аватара
 
Сообщений: 55
Награды: 0
Репутация: 0
Статус: Offline
Наверное я не первый, кто задаётся таким вопросом, но поиск не дал резульатов.
Допустим у меня есть скрипт который врезультате показывает определённое число, допустим вот так:
скрипт "Score"

var Score : int;
var Time : int;

как теперь заставить другой скрипт использовать Score и Time из скрипта "Time"?
Заранее благодарен)
 
СообщениеНаверное я не первый, кто задаётся таким вопросом, но поиск не дал резульатов.
Допустим у меня есть скрипт который врезультате показывает определённое число, допустим вот так:
скрипт "Score"

var Score : int;
var Time : int;

как теперь заставить другой скрипт использовать Score и Time из скрипта "Time"?
Заранее благодарен)

Автор - HeadLiner
Дата добавления - 29 Авг 2013 в 19:39
ЛевшаДата: Чт, 29 Авг 2013, 19:50 | Сообщение # 2
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Самое простое - это использовать статические переменные.
Но! только если скрипт с таким именем в игре только один!

Код
static var score : int;  
static var time : int;

Time.score = 10; // так обращаться из других скриптов.


PS. Категорически не рекомендую использовать занятые имена переменных и классов !!! Таких как Time и т.д.


X.cor.R (Prologue)
 
СообщениеСамое простое - это использовать статические переменные.
Но! только если скрипт с таким именем в игре только один!

Код
static var score : int;  
static var time : int;

Time.score = 10; // так обращаться из других скриптов.


PS. Категорически не рекомендую использовать занятые имена переменных и классов !!! Таких как Time и т.д.

Автор - Левша
Дата добавления - 29 Авг 2013 в 19:50
HeadLinerДата: Чт, 29 Авг 2013, 20:54 | Сообщение # 3
Нет аватара
 
Сообщений: 55
Награды: 0
Репутация: 0
Статус: Offline
Time я просто так написал )
а есть какие-нибудь другие варианты?
 
СообщениеTime я просто так написал )
а есть какие-нибудь другие варианты?

Автор - HeadLiner
Дата добавления - 29 Авг 2013 в 20:54
ЛевшаДата: Чт, 29 Авг 2013, 22:53 | Сообщение # 4
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Цитата (HeadLiner)
другие варианты?

Создать ссылку на скрипт заранее.
Получить ее в реалтайме.


X.cor.R (Prologue)
 
Сообщение
Цитата (HeadLiner)
другие варианты?

Создать ссылку на скрипт заранее.
Получить ее в реалтайме.

Автор - Левша
Дата добавления - 29 Авг 2013 в 22:53
HunjethДата: Чт, 29 Авг 2013, 23:47 | Сообщение # 5
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
Вот пример :

Добавь этот скрипт на объект :
Код

class GameScore extends MonoBehaviour {
  var score : int;
  var time : float;
   
  function Awake() {
   ScoreManager.Set(this);
   DontDestroyOnLoad(transform);
  }
}

static class ScoreManager {
  private var gameScore : GameScore;
   
  function Get() : GameScore {
   return gameScore;
  }
  function Set(gs : GameScore) {
   gameScore = gs;
  }
}


а в другом скрипте пиши :
Код
ScoreManager.Get().score = 10;


Сообщение отредактировал Hunjeth - Чт, 29 Авг 2013, 23:59
 
СообщениеВот пример :

Добавь этот скрипт на объект :
Код

class GameScore extends MonoBehaviour {
  var score : int;
  var time : float;
   
  function Awake() {
   ScoreManager.Set(this);
   DontDestroyOnLoad(transform);
  }
}

static class ScoreManager {
  private var gameScore : GameScore;
   
  function Get() : GameScore {
   return gameScore;
  }
  function Set(gs : GameScore) {
   gameScore = gs;
  }
}


а в другом скрипте пиши :
Код
ScoreManager.Get().score = 10;

Автор - Hunjeth
Дата добавления - 29 Авг 2013 в 23:47
seamanДата: Пт, 30 Авг 2013, 10:03 | Сообщение # 6
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Цитата
поиск не дал резульатов.

Очень плохо искали. Этот вопрос задается не реже раза в неделю.
Цитата
а есть какие-нибудь другие варианты?

Find(имя_объекта)
GetComponent(имя_скрипта) as имя_скрипта
 
Сообщение
Цитата
поиск не дал резульатов.

Очень плохо искали. Этот вопрос задается не реже раза в неделю.
Цитата
а есть какие-нибудь другие варианты?

Find(имя_объекта)
GetComponent(имя_скрипта) as имя_скрипта

Автор - seaman
Дата добавления - 30 Авг 2013 в 10:03
VolkOrievithДата: Сб, 31 Авг 2013, 21:36 | Сообщение # 7
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
HeadLiner, посмотрите тут, вдруг поможет.
 
СообщениеHeadLiner, посмотрите тут, вдруг поможет.

Автор - VolkOrievith
Дата добавления - 31 Авг 2013 в 21:36
Форум Игроделов » UNITY3D » HELP & FAQ » Взаимодействие скриптов
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024