Результаты поиска
| |
alexsilent | Дата: Суббота, 02 Мая 2015, 20:28 | Сообщение # 581 | Тема: Как найти 16 в числе 356? В исчислении 1,2,4,8,16,32 и т.д |
почти ветеран
Сейчас нет на сайте
| Приветствую друзья. У меня немного специфический вопрос. Как найти 16 в числе 356 к примеру?! В исчислении 1,2,4,8,16,32 и т.д (не знаю, как это всё называется, я просто точно знаю что если эти числа суммировать, то всегда можно узнать какие числа были суммированы, то есть они уникальны, но на этом моя теория заканчивается)
Мне это нужно для сохранения уникальных апгрейдов лагеря, который можно прокачивать.
К примеру: 1 - костёр, 2 - палатка, 4 - часы, 8 - алхимический стол и т.д. и их сумма покажет одним числом, какие апгрейды есть в этом лагере. К примеру число 10 показывает что в лагере только = палатка (2) + алхимический стол (8).
Полазил по сайтам программистов и там слишком заумно. слишком много терминологии, я дизайнер, а не программист, у меня голова от наплыва информации едет и всё на английском)
Кто-то может простым примером и русским языком объяснить, как правильно находить такое уникальное число в сумме?
То есть я совсем не понимаю, что мне нужно написать, чтобы узнать, есть ли число 16 в числе 356? Или в любом другом.
Другими словами есть ли какой-то специальный оператор или нужно самому функцию писать?
Извините за каламбур, из-за того что я не силён в терминологии, надеюсь меня смогли понять!
Сообщение отредактировал alexsilent - Суббота, 02 Мая 2015, 20:46 |
|
| |
alexsilent | Дата: Четверг, 30 Апреля 2015, 11:56 | Сообщение # 582 | Тема: Видео ролики в Unity? Особенности и подводные камни? |
почти ветеран
Сейчас нет на сайте
| Приветствую друзья! Делаю заставку для своей игры на Flash. И задумался, как теперь это всё перенести в Unity3d!?
1) Flash Видео ролики могут проигрывать в Unity? Скорее всего нет!
2) Либо если нет, то какой вариант будет самый оптимизированный, чтобы видео весило не очень много (чем меньше, тем лучше) и работало в Юнити, может есть какие-то варианты?! Какие есть подводные камни у видео роликов?
3) а если придётся в формате видео делать заставку, то как решить проблему кодеков, ведь его просто может не быть у пользователя?
Добавлено (30 апреля 2015, 11:56) --------------------------------------------- UPDATE: Я тут немного полазил по сети и нашёл что советуют многие: ffmpeg2theora http://v2v.cc/~j/ffmpeg2theora/ возникает вопрос, а что если нет кодеков на текущем компе у пользователя?
Сообщение отредактировал alexsilent - Четверг, 30 Апреля 2015, 11:58 |
|
| |
alexsilent | Дата: Среда, 29 Апреля 2015, 14:58 | Сообщение # 583 | Тема: Как отключать скрипты? [РЕШЕНО] |
почти ветеран
Сейчас нет на сайте
| Цитата seaman (  ) Вы что-нибудь слышали о наследовании? В Component НЕТ enabled, он появляется только в Behaviour, который унаследован от Component. Приводите полученный компонент к Behaviour, прежде чем использовать его переменные. (GetComponent("MyScript") as Behaviour).enabled = false;
seaman, благодарю! Это именно то, что я давно хотел узнать! Спасибо! Тема решена!
Сообщение отредактировал alexsilent - Среда, 29 Апреля 2015, 14:59 |
|
| |
alexsilent | Дата: Среда, 29 Апреля 2015, 12:47 | Сообщение # 584 | Тема: Как отключать скрипты? [РЕШЕНО] |
почти ветеран
Сейчас нет на сайте
| Цитата PATCH1 (  ) че то у вас не так работает как надо))
пример №2
ccылка к сожалению тут по ссылке нет примера с enabled, с остальными переменными работает всё нормально, как ни странно
или у меня руки не из того теста растут, проверю ещё раз
Добавлено (29 апреля 2015, 12:47) --------------------------------------------- Всё разобрался, в примерах указано название класса HingeJoint без кавычек, в этом то и проблема, а мне нужно указать любой скрипт с помощью переменной String, а не какой-то конкретный, статический класс.
В идеале я хочу чтобы было вот так: Код var MyScript : String = "имя моего скрипта"; GetComponent(MyScript).enabled = false;
Можно как-то конвертировать String в название класса?
Сообщение отредактировал alexsilent - Среда, 29 Апреля 2015, 12:50 |
|
| |
alexsilent | Дата: Среда, 29 Апреля 2015, 12:10 | Сообщение # 585 | Тема: Как отключать скрипты? [РЕШЕНО] |
почти ветеран
Сейчас нет на сайте
| Как отключать скрипты? мне пишут 'enabled' is not a member of 'UnityEngine.Component'.
Пишу на ява скрипте
Код GetComponent("MyScript").enabled = false;
Почему-то enabled не работает в GetComponent :< Ну хорошо допустим, я не нашёл в документации в GetComponent - enabled. Но в Behaviour эта штука есть, как добраться до поведения, чтоб его отключать и включать?
Добавлено (29 апреля 2015, 12:10) --------------------------------------------- Хорошо, вот так работает: Код GetComponent(MyScript).enabled = false;
без кавычек... и это одновременно плохо, ибо я хотел бы искать название поведения по переменной String, получить это поведение, и провести свои манипуляции, в данном случае отключить и включить. Это вообще реально?
Сообщение отредактировал alexsilent - Среда, 29 Апреля 2015, 14:59 |
|
| |
alexsilent | Дата: Среда, 29 Апреля 2015, 09:05 | Сообщение # 586 | Тема: 3D Эффект как во FNaF 1,2,3 |
почти ветеран
Сейчас нет на сайте
| да это просто рендеринг, камере в 3д максе или ещё в каком-то 3д редакторе был выставлено большое уменьшение линзы, и наверное есть какие-то другие методы рендеринга панорамы
Сообщение отредактировал alexsilent - Среда, 29 Апреля 2015, 09:06 |
|
| |
alexsilent | Дата: Вторник, 28 Апреля 2015, 08:35 | Сообщение # 587 | Тема: Делать ли очередной клон FNAF? |
почти ветеран
Сейчас нет на сайте
| Правильный клон может стать успешным. Если он не сильно намекает на клон, а использует только механику или идею. Майнкрафт - правильный клон, правда я не помню какой игры
Я сам на днях задумался о всяких ФНАФах, эту игру сделали с минимумом графики, геймплея и на конструкторе игр MMF 2.5, т.е. буквально это может каждый, если создаст какую-то ценность, для народа. Я не фанат такой игры и вообще не любитель, но даже я заметил что об игре бурно говорят. Значить для этих людей эта большая ценность. В общем главная суть - создать ценность для людей. Осталось только понять как.
Я себе отдаю отчёт в том, что ещё будет множество игр в игровой индустрии очень простых идей и которые будут хитами и легендами, многие из них ещё не созданы и ждут момента, когда их создадут. А когда их создают, я обычно хватаюсь за голову и думаю: "Почему я не создал такое? Ведь у меня есть абсолютно все знания, чтобы создать такое, и даже больше?!" Это и Ангри Бёрдс и Флаппи Бёрдс и ФНАФ и Crossy Roads и ещё другие проекты.
Сообщение отредактировал alexsilent - Вторник, 28 Апреля 2015, 08:44 |
|
| |
alexsilent | Дата: Понедельник, 27 Апреля 2015, 22:51 | Сообщение # 588 | Тема: Алиса и персонажи Льюиса Кэрролла |
почти ветеран
Сейчас нет на сайте
| Цитата KamiRonin (  ) Но сказку уже так зажевали до дыр, что имхо, лучше создать свой сюжет на её основе или по её идее. KamiRonin, спасибо за разъяснение! Да, я хочу сделать отсылки, и намёки на знакомые символы сюжета: Шляпник, Алису и прочих, которые живут совершенно в другом мире и при других обстоятельствах.
Сообщение отредактировал alexsilent - Понедельник, 27 Апреля 2015, 22:52 |
|
| |
alexsilent | Дата: Воскресенье, 26 Апреля 2015, 04:03 | Сообщение # 589 | Тема: Алиса и персонажи Льюиса Кэрролла |
почти ветеран
Сейчас нет на сайте
| Привет, друзья! Задумался о такой вещи, как старые, классические произведения. Я хочу сделать игру по Алисе в стране чудес, полностью меняя лица и дизайн, но имена хотел бы оставить приблизительно такие и разные отсылки к книге. 1) Кто имеет права на это литературное произвведение? Могу ли я использовать в игре или нужно спрашивать разрешения за несколько миллионов? 2) А если нельзя использовать этих литературных персонажей, то насколько надо изменить их, чтобы можно было использовать? По каким критерям в основном надо бить, чтобы суд и правообладатели не смогли докапаться?
Сообщение отредактировал alexsilent - Воскресенье, 26 Апреля 2015, 04:19 |
|
| |
alexsilent | Дата: Суббота, 25 Апреля 2015, 12:58 | Сообщение # 590 | Тема: Несыть |
почти ветеран
Сейчас нет на сайте
| Вау! Знакомые лица! Козинака всё ещё пилишь игру, это здорово! Со времён конкурса gamin заметны огромные улучшения.
Нравится стиль насекомых, теперь они выглядят больше в тему стилистики. Удачи с проектом, он становится всё больше и лучше!
PS Я тут недавно тоже решил взяться за переработку своей старой игры, которую делал для Gamin, а то постоянно забрасываю проекты, нужно с тебя брать пример - постоянно возвращаться к проекту и допиливать его:
Сообщение отредактировал alexsilent - Суббота, 25 Апреля 2015, 13:07 |
|
| |
alexsilent | Дата: Суббота, 25 Апреля 2015, 07:52 | Сообщение # 591 | Тема: Stencyl: игрок проваливается сквозь платформу. |
почти ветеран
Сейчас нет на сайте
| Хорошо! :3 Поначалу много танцев с бубном у меня было, потом стало получше. И под конец даже написал пару игр. :3 Я поняшу на этом писал :
http://alexmakovsky.deviantart.com/art....8653960
правда не доделал, перешёл на Юнити, там меньше возникает проблем с программированием и когда уровней более 70 штук, всё это медленно у меня компилируется на Стенсиле и лаги большие на слабых компьютерах, и вдобавок Стенсил перешёл на Haxo (или как-то так) универсальный язык, вместо AS3, и мои дополнительные скрипты перестали работать, к примеру лиана, а без неё игра не имеет смысла.
Сообщение отредактировал alexsilent - Суббота, 25 Апреля 2015, 07:56 |
|
| |
alexsilent | Дата: Четверг, 23 Апреля 2015, 14:35 | Сообщение # 592 | Тема: Stencyl: игрок проваливается сквозь платформу. |
почти ветеран
Сейчас нет на сайте
| AnnTenna, здравствуй! Я в своё время много времени провозился со Стенсилом. Если персонаж изменился/был создан новый, то стоит проверить его коллайдер бокс, его просто может не быть, и нужно будет создать его, либо там могла измениться группа коллайдера. Скинь пожалуйста скрины (настройки персонажа, желательно все вкладки, где коллайдер, физика и последняя вкладка, где обозначается группа) или исходник, я попробую помочь, чем смогу.
Сообщение отредактировал alexsilent - Четверг, 23 Апреля 2015, 14:42 |
|
| |
alexsilent | Дата: Четверг, 23 Апреля 2015, 02:29 | Сообщение # 593 | Тема: Kongregate, кажется меня взломали?! Какой адрес поддержки? |
почти ветеран
Сейчас нет на сайте
| Приветствую, друзья! Недавно мне с Kongregate, отправилась сумма на PayPal и не дошла, который я ввёл в настройках, 1) отправилась автоматически в конце марта (поначалу я искал кнопку, но так и не нашёл, кнопки отправки, я так понял она отправляется автоматически?), либо я где-то не нашёл кнопку отправки... 2) в отчёте написано, что отправлено 30 марта, но как узнать на какой PayPal отправлено, там нет подробных данных в отчёте, если меня сломали , то могли отправить на другой, а потом снова поставить мой PayPal в настройках?! ибо в настройках стоит правильный PayPal 3) куда можно написать им, чтобы узнать подробный отчёт на какой PayPal были отправлены деньги? какой адрес поддержки разработчиков? 4) могли они затеряться по пути? у кого был опыт с конгом?
Сообщение отредактировал alexsilent - Четверг, 23 Апреля 2015, 08:02 |
|
| |
alexsilent | Дата: Среда, 22 Апреля 2015, 13:44 | Сообщение # 594 | Тема: Среднее количество полигонов на сцену для 2006-2008 года? |
почти ветеран
Сейчас нет на сайте
| Приветствую Друзья! Какое можно использовать примерно среднее количество полигонов на сцену для железа 2006-2008 года? И какое стоит делать количество полигонов на крупные объекты, типа кровати, дивана и шкафа? Мне нужно, чтобы вывозили достаточно старые компьютеры годов 2006-2008. 1000 полигонов на объект это много или мало? И какое среднее количество полигонов для объектов мебели 2013-2015 года сейчас используют? Чтобы было примерно сравнение, делать больше или меньше.
Сообщение отредактировал alexsilent - Среда, 22 Апреля 2015, 13:50 |
|
| |
alexsilent | Дата: Среда, 22 Апреля 2015, 02:59 | Сообщение # 595 | Тема: Unity 5 vs Unity 4 |
почти ветеран
Сейчас нет на сайте
| Пятёрка мне нравится, уже привык к её небольшим изменениям. Функционал практически не использую, кроме refraction, для искажения воды в своей 2D игре.
|
|
| |
alexsilent | Дата: Среда, 22 Апреля 2015, 02:51 | Сообщение # 596 | Тема: Какие языки программирования вы считаете лучшими? |
почти ветеран
Сейчас нет на сайте
| Для меня лучший, не тот который быстрый, мощный и универсальный, а тот, где названия операторов, очень короткие, как было в старом добром Basic на ZX-Spectrum, чтобы не запоминать всю эту груду текста, либо визуальный способ программирования, где я вижу все операторы, как на ладони, я не люблю лазить в документацию. В общем мне нравится как в Clickteam MMF 2.5 и Construct 1-2. Скорее мне нравится не язык, мне без разницы, что это будет, а способ ввода данных, ибо я больше дизайнер, чем программист и мне нужно визуально всё это видеть, и не запоминать названия операторов. В Юнити мне нравится плагин Playmaker, который делает программирование более менее визуальным.
Сообщение отредактировал alexsilent - Среда, 22 Апреля 2015, 02:54 |
|
| |
alexsilent | Дата: Понедельник, 20 Апреля 2015, 14:01 | Сообщение # 597 | Тема: Написание псевдоскрипта для быстрого скриптинга уровней. |
почти ветеран
Сейчас нет на сайте
| Цитата MANMANA (  ) на чем реализовал?
На ЯваСкрипт, конечно я не программист и получилось, как обычно г*код :3
Ещё switch не успел прикрутить к этой основе, не до конца наполнил скрипт.
Код #pragma strict
// загрузка уровней: резкая / плавная(игровая) // принимать и посылать мессаги // создавать объекты, двигать объекты, крутить их, ставить объекты в нужное место, удалять объекты // задержка скрипта для катсцены(пауза), delay // Global.Quake, Camera Fade Control, // контроль сутками и погодой (возможно) // контроль туманом и эмбинтом (возможно) // менять музыку, играть звук, играть анимацию // менять цвет и спрайт // управлять сторонними гейм-объектами // выводить сообщение игры
// особые переменные Global // присваивать переменные к гейм объекту // локальные и глобальные переменные в пределах скриптера для обмена между скриптерами // Global.Var
// проверка, удаление и запись квестов // проверка переменных Global.Var и других // проверка столкновения, проверка Fade Camera // проверка суток и погоды (возможно) // проверка использование вещи, проверка вещи в инвентаре(возможно) // проверка дистанции // проверять звук, анимацию
// генератор случайностей // abs // lerp lerpangle // vector3 ? // distance // sin cos time // clamp ? // int // sign
// switch (?) смогу ли реализовать?
@Multiline (15) var Code : String; // изначальный текст кода
// движение по строкам private var LastLine : int; // может стоит убрать или нет??
private var Text : Codes[]; // разобранный код
class Codes { var Word : String[]; }
private var CurrentLine : int; // текущая линия
private var LastCreatedObject : GameObject; // хранение последнего созданного объекта для каждого скрипта отдельно
// локальные переменные private var LocalInt : int[] = new int[10]; // библиотека объектов // слушатель // команды операторы
function Awake() { // инициализация локальных переменных
// взять код, парсить на линии Code = Code.Replace("\t", ""); // remove TAB char var words : String[] = Code.Split("\n"[0]); // создать массив слов Text = new Codes[words.length]; // парсить линии на слова, убирать пустые слова for (var num : int = 0; num < words.length; num++) { var words2 : String[] = words[num].Split(" "[0]); // парсить var newarr : Array = new Array (words2); // создать временный массив // проверка на пустые слова, и убирать их for (var a : int = newarr.length-1; a > 0-1; a--) { if ((newarr[a] as String) == "" || (newarr[a] as String) == null || (newarr[a] as String) == " ") { newarr.RemoveAt(a); } } // назад в свой массив Text[num] = new Codes(); // init Text[num].Word = newarr.ToBuiltin(String) as String[]; // debug log print("****** debug: "+num); var text : String; for (var num2 : int = 0; num2 < Text[num].Word.length; num2++) { text += Text[num].Word[num2]+"*"; } print(text); } }
function Update() { if (Global.Pause) return; ScriptReader(); }
function ScriptReader() { // читать скрипт от начала до конца if (Text.length == 0) return; // коррекция, если нет кода if (LastLine >= Text.length) {LastLine = 0;} // сначала
// читать for (CurrentLine = LastLine; CurrentLine < Text.length; CurrentLine++) { if (CurrentLine >= Text.length) return; // внезапный конец, коррекция при перемотке if end LastLine = CurrentLine+1; // последняя строка var check : String = ScriptCore(CurrentLine); // ядро скрипта, чтение оператора print("CurrentLine: "+CurrentLine+" Text "+Text[CurrentLine].Word[0]); switch (check) { case "stop": // внезапно остановить чтение скрипта LastLine = 0; return;break; default: break; } } LastLine = 0; // сброс строк }
// Конвертация слов в переменные int function GrabInt(name : String) : int { if (name == null) {return 0;} var words : String[] = name.Split("!"[0]); // Парсить слово switch (words[0]) { case "l": // возвращение локальной переменной внутри скрипта return LocalInt[System.Convert.ToInt32(words[1])]; default: return System.Convert.ToInt32(name); break; } }
// Конвертация слов в объекты function GrabObject(name : String) : GameObject { if (name == null) {return gameObject;} // этот объект по умолчанию, когда не понятно, что возвращать var words : String[] = name.Split("!"[0]); // Парсить слово switch (words[0]) { case "it": // этот объект return gameObject; default: // этот объект по умолчанию, когда не понятно, что возвращать return gameObject; break; } }
// Конвертация слов в вектор function GrabVector(name : String) : Vector3 { if (name == null) {return Vector3.zero;} // возвращение пустого вектора var words : String[] = name.Split("!"[0]); // Парсить слово switch (words[0]) { case "v": // свой вектор return Vector3(System.Convert.ToInt32(words[1]),System.Convert.ToInt32(words[2]),System.Convert.ToInt32(words[3])); case "t": case "trans": // возвращение позиции трансформа if (words.length > 1) { // если больше одного слова if (words[1] == "last" || words[1] == "l") {return LastCreatedObject.transform.position;} // возвращение позиции недавно созданного объекта } else { return transform.position; // возвращение позиции себя по умолчанию } break; default: return Vector3.zero; // возвращение пустого вектора break; } }
// If проверка function IfCore(WORD : String[]) : boolean { if (WORD[1] == null) {return false;} switch(WORD[1]) { // проверка второго слова после "If" case "": break; default: // остальные проверки, к примеру локальные переменные var words : String[] = WORD[1].Split("!"[0]); // Парсить второе слово switch (words[0]) { case "l": // проверка локальной переменной [if <A> {< > != ==} <B>] var loc : int = LocalInt[System.Convert.ToInt32(words[1])]; return (IfAction(loc,WORD[2],WORD[3])); // возвращать результат проверки } break; } }
function IfAction(A : int, B : String, B2 : String) { // if (A) (B < > = >= <=) <B2> var C : int = GrabInt(B2);
switch(B) { case "=": case "==": if (A == C) {return true;} break; case "<": if (A < C) {return true;} break; case ">": if (A > C) {return true;} break; case "<=": if (A <= C) {return true;} break; case ">=": if (A >= C) {return true;} break; case "!=": if (A != C) {return true;} break; } return false; }
// Математические операции function MathAction(A : float,WORD : String[]) : int { // {A} {=+-*/} {B} ( {+-*/} {C} ) var B : float = GrabInt(WORD[2]); var C : float = GrabInt(WORD[4]); switch (WORD[1]+WORD[3]) { case "=": return B;break; // A = B
case "=+": return B+C; break; // A = B + C case "=-": return B-C; break; // A = B - C case "=*": return B*C; break; // A = B * C case "=/": return B/C; break; // A = B / C
case "+": return A+B; break; // A += B case "-": return A-B; break; // A -= B case "*": return A*B; break; // A *= B case "/": return A/B; break; // A /= B
default: return B; break; // A = B } }
// Ядро движка скриптов function ScriptCore(num : int) : String { if (Text[num].Word.length == 0) return; // коррекция if (Text[num].Word[0].Substring(0,1) == "/") return ""; // комментарий пропускаем
var ifnum : int = 0; var a : int;
var WORD : String[] = new String[7]; if (Text[num].Word.length > 0) WORD[0] = Text[num].Word[0]; if (Text[num].Word.length > 1) WORD[1] = Text[num].Word[1]; if (Text[num].Word.length > 2) WORD[2] = Text[num].Word[2]; if (Text[num].Word.length > 3) WORD[3] = Text[num].Word[3]; if (Text[num].Word.length > 4) WORD[4] = Text[num].Word[4];
switch(WORD[0]) { case "print": // принт для отладки if (WORD[2]) { print(""+WORD[1]+" "+GrabInt(WORD[2])); } else { print(""+WORD[1]); } break;
/*case "switch": // switch [switch <GrabInt>] Switcher = GrabInt(WORD[1]); break; case "case": // case [case <name$/num$>] if (Switcher != GrabInt) break; case "def": case "default": // default case if () break;*/
case "if": // оператор если if (IfCore(WORD)) { // читать дальше скрипт, потому-что выполнено условие print("IfCore() "+num); } else { print("else: "+num); // искать конец ветви, потому-что не выполнено условие ifnum = 0; for (a = num+1; a < Text.length; a++) { // пройти по всему скрипту от текущего места, в поисках конца условия if (Text[a].Word.length > 0) { // если в строке есть хоть одно слово if (Text[a].Word[0] == "if") {ifnum++;} // новое условие, углубиться дальше if (Text[a].Word[0] == "get") {ifnum++;} // новое условие, углубиться дальше if (Text[a].Word[0] == "switch") {ifnum++;} // свитч if (Text[a].Word[0] == "end") {ifnum--;} // вслпыть с условия
if (Text[a].Word[0] == "else" && ifnum == 0) { // else условие CurrentLine=a;return "ok"; // найден конец ветви else }
if (ifnum < 0) {CurrentLine=a;return "ok";} // найден конец ветви } } return "stop"; } break; case "else": // оператор иначе // искать конец ветви для Else т.е. искать свой END ifnum = 0; for (a = num+1; a < Text.length; a++) { // пройти по всему скрипту от текущего места, в поисках конца условия if (Text[a].Word.length > 0) { // если в строке есть хоть одно слово if (Text[a].Word[0] == "if") {ifnum++;} // новое условие, углубиться дальше if (Text[a].Word[0] == "get") {ifnum++;} // новое условие, углубиться дальше if (Text[a].Word[0] == "switch") {ifnum++;} // свитч if (Text[a].Word[0] == "end") {ifnum--;} // вслпыть с условия
if (ifnum < 0) {CurrentLine=a; return "ok";} // найден конец ветви } } return "stop"; break; // конец if get switch etc case "end": // end if / end get / etc break;
// остановить скрипт case "stop": // [stop] stop the script return "stop"; break; // отключить (удалить) скрипт до перегрузки уровня[off] case "off": Destroy(this); return "stop"; break; // задержка скрипта для катсцены(пауза), case "delay": // delay [] // взять время, и потом проверять время в Update // ????????????????????????????????????? break;
// загрузка уровней: резкая / плавная(игровая) case "load": // load level [load <name$> <id$>] Global.LoadLEVEL(WORD[1],WORD[2]); break; // принимать и посылать мессаги case "send": // send message [send <game object> <name$> <mode$>] GrabObject(WORD[1]).SendMessage(WORD[2],WORD[3],SendMessageOptions.DontRequireReceiver); break;
// создавать объекты, двигать объекты, крутить их, ставить объекты в нужное место, удалять объекты case "create": // [create <game object> <position>] LastCreatedObject = Instantiate(GrabObject(WORD[1]),GrabVector(WORD[2]),Quaternion.identity); break; case "pos": case "position":// изменять позицию объекта [pos <GO> <position>] GrabObject(WORD[1]).transform.position = GrabVector(WORD[2]); break; case "locPos": // изменять локальную позицию объекта [locPos <GO> <position>] GrabObject(WORD[1]).transform.localPosition = GrabVector(WORD[2]); break; // Global.Quake, Camera Fade Control case "ang": case "angle": // set angle [ang <GO> <vector>] GrabObject(WORD[1]).transform.eulerAngles = GrabVector(WORD[2]); break; case "locAng":// local angle [locAng <GO> <vector>] GrabObject(WORD[1]).transform.localEulerAngles = GrabVector(WORD[2]); break; // удалить объект case "delete": // [delete <game object>] delete object Destroy(GrabObject(WORD[1])); return "stop"; break; // контроль сутками и погодой (возможно) // контроль туманом и эмбинтом (возможно) // менять музыку, играть звук, играть анимацию // менять цвет и спрайт // управлять сторонними гейм-объектами // выводить сообщение игры default: // различные действия присвоения var words : String[] = WORD[0].Split("!"[0]); // Парсить первое слово switch (words[0]) { case "l": // [l.2 = <A> <+ - * /> <B>] var loc : int = System.Convert.ToInt32(words[1]); var nn : int = MathAction(LocalInt[loc],WORD); LocalInt[loc] = nn; // математические операции break; default: // ??????? break; } break; } }
Сообщение отредактировал alexsilent - Понедельник, 20 Апреля 2015, 14:29 |
|
| |
alexsilent | Дата: Понедельник, 20 Апреля 2015, 10:13 | Сообщение # 598 | Тема: Написание псевдоскрипта для быстрого скриптинга уровней. |
почти ветеран
Сейчас нет на сайте
| Цитата MANMANA (  ) кхы, пока копался, нарыл вот такое http://www.blackbeltcoder.com/Article....aluator функционал можно дописать самому, а главное выражения можно брать от пользователей но все равно - это парсер MANMANA, спасибо большое! Интересная вещь.
Добавлено (20 апреля 2015, 10:10) --------------------------------------------- Сделал первую версию ускоренного скриптера для уровней) Не будет рекомпиляции после написания мини-кода, и вдобавок тот же самый код пишется быстрее в разы и не будет проблем с небольшими уникальными кодами (естественно, в скорости будет заметно проигрывать обычному коду, но это будет подходить для уникальных событий, коих будет не мало, но и не так уж и много на одной локации):
Добавлено (20 апреля 2015, 10:13) --------------------------------------------- Цитата beril (  ) Тогда CSharpMessenger, если нет желания разбираться с делегатами и событиями. beril, спасибо!
Сообщение отредактировал alexsilent - Понедельник, 20 Апреля 2015, 10:16 |
|
| |
alexsilent | Дата: Суббота, 18 Апреля 2015, 09:39 | Сообщение # 599 | Тема: Написание псевдоскрипта для быстрого скриптинга уровней. |
почти ветеран
Сейчас нет на сайте
| Цитата beril (  ) лучше бы ты не использовал часто этот метод и подобные ему дорогая операция? Просто у меня не стратегия (субъектов не много), я думаю сильно проблематично с этим не будет. Не так массивно у меня проводятся SendMessage как это было бы в играх жанра RTS Очень часто мне нужно именно SendMessage и BroadcastMessage, ибо я дизайнер, я не люблю много кода , много текста и много строк, из-за этого я и пишу этот псевдоскриптер, чтобы в будущем ограничить себя от большого кода, и мне нужна простая и универсальная передача данных, а не сложная. GetComponent сложная, статичная и не универсальная - чтобы передать данные из скрипта, надо во первых знать, как этот скрипт называется, (обязательно прописать название скрипта в качестве типа этой переменной принимающей скрипт), а что если я с разных скриптов передаю эту информацию? И тогда мне помогает SendMessage, чтобы не знать и не прописывать все варианты откуда эта информация может передаваться. А иногда нужно нескольким сразу поведениям на одном объекте принять один и тот же сигнал. Если б был ещё более простой и универсальный способ, я б им пользовался)
Мне нужно от кода минимум текста - максимум результата), даже если это дороже по затратам процессов.
PS В Юнити иногда требуется очень много писать, я каждый божий раз забываю даже избитую оскоминой фразу, как правильно писать: gameObject.SendMessage("Messsage",text, эту длинную фразу, которую я всегда забываю и ищу в документациях или копипаста) я о фразе SendMessageOptions.DontRequireReceiver (почему по дефолту не стоит эта опция?) Юнити совсем не способствует сокращению писанины, хотя бывают некоторые полезные упрощения, но фразы часто очень длинные и легко забываемые для дизайнеров, которые больше используют правое полушарие мозга и не всегда любят зубрёжку и логику.
Сообщение отредактировал alexsilent - Суббота, 18 Апреля 2015, 11:10 |
|
| |
alexsilent | Дата: Пятница, 17 Апреля 2015, 15:54 | Сообщение # 600 | Тема: Написание псевдоскрипта для быстрого скриптинга уровней. |
почти ветеран
Сейчас нет на сайте
| Приветствую друзья! Пишу псевдоскрипт, для быстрого написания мини скриптов, для меня очень удобно писать сокращённо, очень давно я придумал свой встроенный скрипт в Blitz Max, для скриптинга уровней, теперь хочу перенести его в Unity3d (ибо мой скрипт оптимизирован под "1 короткая строка - максимум результата", а в обычном скрипте я буду писать всё это очень долго, каждый раз забывая длинные фразы и поглядывая в документацию):
Код if collision player create obj1 100,100,0 send last Rename item talk hi1 talk hi2 delete end
И появились вопросы:
1) Появился пока барьер, который не могу обойти:
Нужно принять сообщение от SendMessage, оно может быть абсолютно любое, есть ли какие-то другие средства перехвата сообщения, кроме самого названия функции?
Либо придётся прописывать все возможные варианты принятия сообщений в виде функций, но это будет слегка тягомотно.
2) Можно ли как-то превращать строку String в математическое действие, чтобы это всё само посчиталось? Либо придётся по старинке, парсером. Но вдруг есть халявный метод?
Сообщение отредактировал alexsilent - Пятница, 17 Апреля 2015, 16:22 |
|
| |
|