Суббота, 23 Ноября 2024, 06:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
связь 3х скриптов
SkyWongДата: Воскресенье, 29 Июля 2018, 20:45 | Сообщение # 1
был не раз
Сейчас нет на сайте
замысел сие заключается в том, что у меня есть скрип, посвещённый ГГ, а так же отдельный скрипт, в котором есть враги (пока что там один, но в идеале сделать через массив и ,забыть туда их множество), и во время боёвки должны обрабатываться третьим скриптом, который берёт из первого и второго переменные жизней, урона и д.т.
но сталкнулся с такой проблемой что при использовании GetComponent он не хочет возращать изменённые значения в первые два скрипта, я ссылаюсь это на свои познания языка, возможно криво построенный алгоритм, но чёрт возьми это не работает... есть люди знающие как это реализовать? или подсказать как это можно выполнить более грамотно.
ссылка на первый скрипт
http://s1.uploadpics.ru/images/WJSpgD-73m.jpg
ссылка на второй скрипт
http://s1.uploadpics.ru/images/W1cJWP-QnQ.jpg
ссылка на третий скрипт где происходит обработка первых двух
http://s1.uploadpics.ru/images/ZktWbDZm3X.jpg
IlyaKosДата: Понедельник, 30 Июля 2018, 10:00 | Сообщение # 2
участник
Сейчас нет на сайте
Ты на том же объекте, где компонент Enemies, ищешь компонент Battle. Это так?
SkyWongДата: Среда, 01 Августа 2018, 18:10 | Сообщение # 3
был не раз
Сейчас нет на сайте
понял как сделать
alexsilentДата: Четверг, 02 Августа 2018, 03:22 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Я для возвращения данных после SendMessage использую старые добрые Static переменные.
То есть у меня, есть:
1) статические переменные: Сколько урона, Кто ударил, и другие данные
Код
          static var MinusHealth : float; // (у меня тут на ЯваСкрипте, но думаю всё понятно и так)
          static var CurrentTransform : Transform; // трансформ объекта , который атаковал, ну и можно кучу другого взять

это была инициализация, например в скрипте Global, а потом мы обращаемся к ним
Код

Global.MinusHealth = 10;
Global.CurrentTransform = transform;

2) дальше по коду SendMessage объявляет урон какому-то там объекту, и если нужно будет вернуть какие-то данные,
то тоже отправляем через статические переменные, главное правило - не проверять два параллельных выстрела,
а проверять последовательно, то есть за одну ходку всё проверить, иначе такая моя простая система не будет работать,
и нужно мозгами пораскидывать, например вообще отказаться от SendMessage и заменить на GetComponent

Добавлено (02 Августа 2018, 03:25)
---------------------------------------------
мой код выглядит примерно так на ЮнитиСкрипт, лень переделывать в Сишарп, ибо я пока очень слабо его знаю:
Код

function OnTriggerStay2D(other : Collider2D) {
    Global.LastStrike = new SendStrike();
    Global.LastStrike.isPlayer = isPlayer;
    Global.LastStrike.lowStrike = lowStrike;
    Global.LastStrike.pos = StartPos;
    Global.LastStrike.Kingdom = Kingdom;
    Global.LastStrike.script = this;
    other.SendMessage("CrushHP",null,SendMessageOptions.DontRequireReceiver);
}


а это инициализация в Global скрипте:
Код

// Last Strike Datas
static var LastStrike : SendStrike;
class SendStrike {
    var isPlayer : boolean;
    var Kingdom : String;
    var pow : float; // power of strike
    var pos : Vector3; // position (for direction backward)
    var MirroredStrike : float; // mirrored strike when opponent block then him enemies get hurt...
    var lowStrike : boolean; // Strike by Earth
    var type : String; // weapon type B(lunt)/P(ierce)/S(lash)
    var element : String; // weapon element F(ire)/W(ater)/E(arth)/A(ir)/L(ight)/D(arkness)
    var script : WeaponNew;
}


и естественно легко назад данные возвратить через Static, может быть даже создать отдельные статические переменные


Сообщение отредактировал alexsilent - Четверг, 02 Августа 2018, 03:28
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг