Сам долго мучился, додумываясь, как же мне реализовать то-то или то-то. Приведу несколько простых кодов:
Из скрипта X меняем переменную Bullets в скрипте Fire (Имя можете придумать любое другое), на другом объекте по нажатию левой мыши. Тут так: Допустим нам надо пополнить потроны. Мы Объявляем переменную ScriptFire (1) её надо установить в инспекторе, затем в функции Update() (2), которая повторяется каждый кадр, проверяем, нажата-ли клавиша "Fire 1" (по стандарту - левая кнопка мыши) (3), после чего проверяем, есть ли на объекте ScriptFire скрипт Fire (4). Теперь надо изменить переменную Bullets (5). Всё.
Код
var ScriptFire : GameObject; // 1
function Update () { // 2 if (Input.GetButtonDown("Fire 1"){ // 3 (Если нажата клавиша "Fire 1") if (ScriptFire.GetComponent("Fire")) // 4 (Есть ли на объекте ScriptFire скрипт Fire) ScriptFire.GetComponent("Fire").Bullets = 10; // 5 (Устанавливаем значение переменной) } }
или отключаем скрипт Fire:
Код
var ScriptFire : GameObject;
function Update () { if (Input.GetButtonDown("Fire 1"){ // (Проверяем, нажата ли клавиша "Fire 1") if (ScriptFire.GetComponent("Fire")) // 4 (Есть ли на объекте ScriptFire скрипт Fire) ScriptFire.GetComponent("Fire").enabled = false; // Отключаем скрипт Fire. } }
или находим игрока по тегу (Установить тег игрока, например, Player), затем находим среди его потомков (В окне иерархии) скрипт Fire и отключаем его:
Код
private var Player : GameObject;
function Update () { if (!Player){ // если переменная Player не установлена, Player = GameObject.FindGameObjectWithTag("Player");// находим игрока по тегу Player. }else{ // иначе (если переменная Player установлена), if (Input.GetButtonDown("Fire 1") {// (если нажата клавиша "Fire 1") Player.GetComponentInChildren(Fire).enabled = false; // находим среди потомков Player объект, со скриптом Fire и отключаем скрипт } } }
Может это странно, но я очень долго не мог понять, как сделать всё выше перечисленное. Поменять переменную Bullets на скрипте Fire, на родительском объекте (его можно визуально найти в окне иерархии) можно так:
Код
function Update () { if (Input.GetButtonDown("Fire 1"){ transform.parent.gameObject.GetComponent("Fire").Bullets = 10; // трансформ.родитель.gameObject.взять компонент "Fire".Bullets = 10; } }
удочерить объект другому объекту можно так:
Код
var MineParent : GameObject;
function Update () { if (Input.GetButtonDown("Fire 1"){ transform.parent = MineParent.transform; // трансформ.родитель = значение переменной MineParent.трансформ; } }
Пока что больше ничего не придумал. Если что, спрашивайте. Постараюсь ответить.
PS. seaman, теперь норм?
Сообщение отредактировал VolkOrievith - Чт, 25 Июл 2013, 09:46