Переход со Stencyl на Unity3D

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Переход со Stencyl на Unity3D

Сообщение alexsilent 24 мар 2012, 13:20

Давно хотел за Юнити взяться. Совсем чуть-чуть поэкспериментировал с ней, а потом перешел на конструктор Stencyl (на нем достаточно удобней делать 2Д игры, мне это очень нравится, но он ужасно не оптимизированный и только для флеша).

Наконец-то я все таки установил снова Unity и понял, что абсолютно все забыл, даже то что уже получалось. Пару суток мучаюсь с документацией и хелпом.

Решил перевести свою игру-эксперимент со Стенсила на Юнити и появилась тонна вопросов:
1) Есть ли тут возможность добавлять глобальные переменные, которые будут не удаляться при загрузки новой сцены, и особенно важно глобальные списки? Например Стенсил сохраняет только глобальные переменные, я уже привык так, и это хороший способ обмениваться информацией между уровнями. А как тут дела обстоят? Сложнее ли тут сделать десяток глобальных переменных и легко ли к ним обращаться когда нужно? (я больше дизайнер, чем программист ^^', мне главное чтобы было полегче, почти автоматически с магией и минимумом кода :> )

2) В Стенсиле между поведениями и объектами есть обмен данных. Это выглядит примерно так: [Set actor value] (добавляется свободная переменная к другому объекту с любым каким хочешь названием и данными (цифры, текст или boolean)) или можно обратится к функции в поведении другого объекта. Есть ли тут аналоги? И как это называются в Unity?

3) Можно ли из поведения объекта сделать примерно такое? [For each {OBJECT TYPE}] то есть пройтись по всем объектам сцены с какими-то особыми приметами? (И например сообщить им какую-либо информацию.)
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: Перехожу со Stencyl на Unity3D

Сообщение Левш@ 24 мар 2012, 13:31

3) Можно ли пройтись по всем объектам сцены с какими-то особыми приметами?

Обьектам назначаються Слои, теги, ну можно найти обьект и по имени.

Есть ли тут возможность добавлять глобальные переменные

Сколько угодно, и как угодно.

В любом случае понятно, что Юнити на 3 головы выше чем стенсил и его возможности тоже. :)
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Перехожу со Stencyl на Unity3D

Сообщение alexsilent 24 мар 2012, 13:41

Левш@ писал(а):
3) Можно ли пройтись по всем объектам сцены с какими-то особыми приметами?

Обьектам назначаються Слои, теги, ну можно найти обьект и по имени.

Есть ли тут возможность добавлять глобальные переменные

Сколько угодно, и как угодно.

В любом случае понятно, что Юнити на 3 головы выше чем стенсил и его возможности тоже. :)


Спасибо за ответ! :3

Да! Да! Я, я вначале на Стенсил ушел, так как в Стенсиле легче, и думал, там подучу Поведения (после BlitzMax) и уже потом перейду на Юньку.)
Так как понимаю, что Unity намного выше.

Мне просто интересны сами названия операторов (аналоги Стенсила), я бы уже сам дальше накопал в документации. (Еще лучше с примером кода,
но это уже роскошь :D, хотя бы узнать куда копать в хелпе по скриптам). Например глобальные переменные они инициализируются только через поведение прикрепленное к какому-то объекту в сцене, а не исчезнут ли они когда сцена удалится? Они так и называются Global?

Или вот например
*Какими операторами или методами обмениваются информацией поведения в объекте?
*Поведения между разными объектами?
просто в Стенсиле было все на виду в виде табличек, в Юньке я заблудился в куче операторов в документации. Хотя в принципе уже многое нашел и вспомнил
Mathf (для математики) потом rigidbody (чтоб управлять скоростью объектом) и transform (чтобы делать некоторые другие манипуляции с мешем)
Последний раз редактировалось alexsilent 24 мар 2012, 13:47, всего редактировалось 1 раз.
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: Переход со Stencyl на Unity3D

Сообщение Receptor 24 мар 2012, 13:47

объявление глобальной переменной в [unity 3D] (c#) выглядит так (вроде бы):

Синтаксис:
Используется csharp
static public imyaPeremennoy;


п.с. но такая переменная не отобразиться в редакторе самом (не вдавался в подробности из-за чего).
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Переход со Stencyl на Unity3D

Сообщение Левш@ 24 мар 2012, 14:21

Например глобальные переменные они инициализируются только через поведение прикрепленное к какому-то объекту в сцене, а не исчезнут ли они когда сцена удалится? Они так и называются Global?

Есть разные способы иметь глобальные переменные.
Можно просто обьявить:
Синтаксис:
Используется javascript
static var glVar_0 : int = 0;

Обратиться к такой переменной можно из любого скрипта:
Синтаксис:
Используется javascript
ИмяCкрипта.glVar_0 = 10;

Можно просто получить ссылку на сам скрипт и заиметь доступ вообще ко всем его переменным (и функциям), кроме private var.
Синтаксис:
Используется javascript
var script = gameObject.Find("ИмяОбьекта").GetComponent("ИмяСкрипта");
script.glVar_0 = 55;


Тут есть моя статья для нубов, легким языком и подробно: http://gamecreatingcommunity.ru/forum/186-2694-1 :)

А чтоб они не исчезли при переходе на другую сцену, скрипт можно повесить на обьект которому можно запретить удаление - DontDestroy.
Синтаксис:
Используется javascript
function Awake () {
    DontDestroyOnLoad (transform.gameObject);
}
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Переход со Stencyl на Unity3D

Сообщение alexsilent 24 мар 2012, 15:13

Receptor писал(а):объявление глобальной переменной в [unity 3D] (c#) выглядит так (вроде бы):

Синтаксис:
Используется csharp
static public imyaPeremennoy;


п.с. но такая переменная не отобразиться в редакторе самом (не вдавался в подробности из-за чего).


Спасибо большое! Уже яснее куда копать. :3
Этот пункт можно сказать, решен.)
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: Переход со Stencyl на Unity3D

Сообщение alexsilent 24 мар 2012, 15:20

Левш@ писал(а):
Тут есть моя статья для нубов, легким языком и подробно: http://gamecreatingcommunity.ru/forum/186-2694-1 :)

А чтоб они не исчезли при переходе на другую сцену, скрипт можно повесить на обьект которому можно запретить удаление - DontDestroy.
Синтаксис:
Используется javascript
function Awake () {
    DontDestroyOnLoad (transform.gameObject);
}


Отличная статья. Большое Спасибо, сейчас ее читаю!
Освежил память, по Юнити. :>

А особенно большое спасибо за Don't Destroy и навешивание туда глобальных переменных, это может стать абсолютным аналогом глобальных атрибутов
в Stencyl, у меня как раз первая локация в игре, пустая, для того чтобы инициализировать разные важные вещи, только вначале игры.
Также сделаю и в Юньке. ^_^

Осталось только понять как сохранять только эти атрибуты и потом загружать.) Но наверное это позже.
Сейчас пытаюсь найти как пройтись из скрипта по всем объектам относящимся к одному тэгу. В документации при поиске "For Each" ничего не обнаружено :<
как же по объектам в сцене "пройтись"?
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: Переход со Stencyl на Unity3D

Сообщение Golandez 24 мар 2012, 15:25

По тегам FindGameObjectsWithTag. Если по всем в сцене, то по типам Object.FindObjectOfType.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Переход со Stencyl на Unity3D

Сообщение Левш@ 24 мар 2012, 17:24

Осталось только понять как сохранять только эти атрибуты и потом загружать.

PlayerPrefs.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Переход со Stencyl на Unity3D

Сообщение alexsilent 25 мар 2012, 04:37

Golandez писал(а):По тегам FindGameObjectsWithTag. Если по всем в сцене, то по типам Object.FindObjectOfType.

Большое спасибо! То что нужно, хотя тут пометка, что FindObjectsOfType медленная операция. Но надеюсь у "поиск по тэгам" быстрее,
так как там ничего такого не написано в документации.
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: Переход со Stencyl на Unity3D

Сообщение alexsilent 25 мар 2012, 04:48

Левш@ писал(а):
Осталось только понять как сохранять только эти атрибуты и потом загружать.

PlayerPrefs.


Большое спасибо! По сохранении появились вопросы:
1) Я так понимаю это сохранение одно?!
А вот как например люди сохраняют, для стандартных игр, где сохранение не одно на всю игру, а где есть несколько секторов?
Хотя бы как на старых приставках, как в Зельде, где секторов для сохранений обычно 3 и больше.
2) Тут написано, что для WEB player нельзя больше мегабайта. Если я правильно перевел. Надеюсь это единственное ограничение.
И например на iOS можно хоть 10 мегабайт.
3) А как тут сохранять списки? Мне нужно куда-то сохранять список всего с одной строкой, где будет написано в одну строку взятые вещи,
я обычно делаю по формуле (название уровня + начальная X координата + начальная Y координата) главное чтоб две вещи на одной координате
на уровне не находились :D
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: Переход со Stencyl на Unity3D

Сообщение alexsilent 25 мар 2012, 05:02

1)еще не могу найти, как делать списки!
В Документации на слово List выдается целая гора чего-то совсем другого.

2) А как тут проверяются последние столкновения? Просто в Stencyl, была отдельная функция для столкновений, внутри нее все операции по коллизии проходили.
Там даже для удобства была переменная LastCollidedActor для проверки последнего столкнувшегося объекта

3) Также там есть штука вроде Назначенной анимации (может это можно назвать Tween или нет), например пишешь в функции За сколько секунд
объекту плавно изменить Альфу, или перемещаться/крутиться/увеличиваться. Очень удобная штука была, есть ли что-то подобное в Unity3D?

PS полез на сутки опять в документацию, может что найду, взял кирку и фонарик. :3
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: Переход со Stencyl на Unity3D

Сообщение Receptor 25 мар 2012, 05:44

Почитай туториал вот этот: viewtopic.php?f=11&t=753
И этот можно: viewtopic.php?f=11&t=430
Рекомендованно :D Про проверку на коллишн там есть "маленький пунктик".

И вообще, совет, я разбераюсь не больше вашего, но раньше тоже увлекался Блитз3Д, по этому могу сказать, что тут ООП, а не процедурный язык, все по другому совсем, все посложнее, но и возможностей в миллион раз больше, по этому, для начала почитайте хотя бы просто про С#, например, если в этом есть необходимость конечно :)
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Переход со Stencyl на Unity3D

Сообщение alexsilent 25 мар 2012, 10:08

Receptor писал(а):Почитай туториал вот этот: viewtopic.php?f=11&t=753
И этот можно: viewtopic.php?f=11&t=430
Рекомендованно :D Про проверку на коллишн там есть "маленький пунктик".

И вообще, совет, я разбераюсь не больше вашего, но раньше тоже увлекался Блитз3Д, по этому могу сказать, что тут ООП, а не процедурный язык, все по другому совсем, все посложнее, но и возможностей в миллион раз больше, по этому, для начала почитайте хотя бы просто про С#, например, если в этом есть необходимость конечно :)


C Blitz3D я тоже работал, мне он нравился, но потом я сел за BlitzMAx, хотя вроде еще помню и 3D.

Большое спасибо!
Значить мне надо снова сесть за уроки! ^^
Когда-то я эти уроки проходил, надо было не забрасывать Юньку. ^_^'
Все стерлось из памяти, хотя начал все вспоминать за последние сутки.

Я глубоко в ООП не хочу лезть, все таки я дизайнер, голова перестает соображать,
когда речь заходит о глубоких понятиях Потомки, что-то там типа Inheritance и т.п., я и без них надеюсь справлюсь. ^_^'
Я их никогда все равно не осилю, и как я заметил, почти все можно более простым способ реализовать на Юнити.

Мне бы только базовые знания) не программирования, а как сделать то или иное действия и из этого конструктора, я собираю игры,
в некотором смысле я думаю как Фрай из футурамы, как-то на другой волне совсем, но в итоге все таки собираю игры, и иногда до конца :D

Вот не помешали бы знания, как сделать например:
1) Сохранение/Загрузка игры, но не ту что предлагает Unity3D, есть ли аналог BlitzMax-овским ReadLine WriteByte ReadFile WriteFile?
2) Загрузка и Отгрузка текстур/картинок. Или они автоматически в Юнити? Такие как LoadImage ClearImage? и иже с ними очистка памяти GCCollect
3) Есть ли как аналог Blitzmax, в упрощенной форме AddList, RemoveList и For each in list, простое создание списка без потомков и страшных слов ООП

Спасибо ребятам, с глобальными я разобрался. И как обмениваться данными между объектами.
Сейчас начну штудировать документацию или уроки по части Коллизии.
Последний раз редактировалось alexsilent 25 мар 2012, 11:08, всего редактировалось 2 раз(а).
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: Переход со Stencyl на Unity3D

Сообщение alexsilent 25 мар 2012, 11:03

А еще:
Есть ли резкая остановка продолжения скрипта/поведения? Что-то вроде STOP
документация находит многое, но я так и не нашел то что нужно.
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

След.

Вернуться в Почемучка

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25