суббота, 26 июля 2014 г.

Полезности для Unity3d / С#

На прошлых выходных опять участвовали в Ludum Dare - на этот раз в mini версии. Игру решили делать в первый раз на Unity, так что в процессе изучения решил собрать список полезного что получилось найти.
MiniLD#53 game: http://stals.itch.io/dream-ticket
Timelapse: http://www.youtube.com/watch?v=ufH4JAloVe8

Цвет в playmode
Очень советую поменять цвет в play mode чтобы необычайно не редактировать, а потом не сохранится
http://answers.unity3d.com/questions/9159/best-strategies-for-not-accidently-editing-whilst.html

Система контроля версий
При начале нового проекта нужно сразу настроить unity3d для использования git / mercurial / ...
http://stackoverflow.com/questions/18225126/how-to-use-git-for-unity3d-source-control

New Behaviour
В Unity можно заменить чтобы при создании класса он по умолчанию наследовался не от MonoBehaviour а от своего расширенного класса, как например такого




Для этого нужно немного отредактировать файл, с тем расширенным Behaviour
 OSX 
    - /Applications/Unity/Unity.app/Contents/Resources/ScriptTemplates 

 Windows
    - C:\Program Files (x86)\Unity\Editor\Data\Resources\ScriptTemplates

в файле 81-C# Script-NewBehaviourScript.cs.txt

Extension methods
http://unitypatterns.com/extension-methods/

Autogenerated set/get methods
public Vector3 movement { get; set; } 
создает геттер и сеттер, позволяя потом добавить туда логику если потребуется

Mono develop disable autoindentation
http://forum.unity3d.com/threads/monodevelop-annoying-auto-indentation.213464/
MonoDevelop-Unity -> Preferences -> Code Formatting -> и правее c# в выпадающем меню выбрать Visual Studio
Чтобы изменить в уже созданном проекте
Project -> Solution Options ->  там найти Code Formatting и дальше также

Также в нем не работает Ctrl+C/V и т.д. если находиться на русской раскладке, что я пока не нашел как побороть.

Var
полезно знать что var не тормозит производительность
http://stackoverflow.com/questions/356846/will-using-var-affect-performance

NGUI
Также если вы собираетесь использовать NGUI то вот пара полезных ссылок:
FAQ + как использовать
tutorial

and dont forget to save a layout - Windows>Layouts>Save layout

NGUI HUD Text
https://www.assetstore.unity3d.com/en/#!/content/3831
http://www.tasharen.com/forum/index.php?topic=997.0
Очень полезная штука чтобы прилеплять Ngui объекты к обычным Unity GameObject. Так например добавить progressbar hp под персонажем игрока.
Но при использовании чисто UIFolllowTarget скрипта, важно помнить что для его работы у него должны быть child элементы - так что для того чтобы за чем либо следовал например UILabel нужно создать пустой GameObject - добавить на него UIFollowTarget, и добавить сам Label уже как child.

Custom fonts
Сайт - позволяющий сделать fnt с stroke или например градиентом
(для корректной работы в Unity нужно выбирать Format - .txt)
http://kvazars.com/littera/

а также полезный туториал о том как создать и как импортировать шрифт в unity ngui
http://www.youtube.com/watch?v=ni7TfMPWq5M

Полезные бибилиотеки
Бибилиотека для движения, scale, rotate используя easing, а также shake
https://github.com/UnityPatterns/AutoMotion/ by ChevyRay

Если буду находить еще что-то полезное - буду дальше обновлять пост.

воскресенье, 6 июля 2014 г.

Deep Dive Update #4

В последние недели разработка немного замедлилась и я начал больше изучать Unity - надеюсь найду время сделать пост начинающего юнитовода - какие знания, инструменты очень полезный на начальном этапе освоения. А пока - что было доработано со времени прошлого поста:

Record
Теперь игра запоминает максимальную достигнутую глубину для каждой зоны, а также если она была пройдена -это пока планируется использовать чтобы при первом прохождении спавнивать там монетки, автоматически притягивающиеся к игроку.


Наклон батискафа
Идея заключается в том чтобы наклонять батискаф в зависимости от его скорости и направления. После того как появился наклон, также стало необходимым больше поворачивать движки и менять положение партиклов движков - для чего оказалось очень удобным  использовать convertToWorldspaceAR так как эта функция учитывает Rotation.

Камера
Поправил точку остановки, оказалось что она рассчитывалась не верно - с учетом точки начала движения камеры игроком, что никак не влияло на реальную позицию камеры.

Swipe Dive!
Наконец-то нашелся относительно простой способ реализовать это улучшение. Основная идея которая помогла - это сделать камеру постепенно возвращающиеся на точку дальше которой игрок начинает двигать камеру.


Другое
Починил начальный угол поворота движков на TitleScreen. Провел небольшой рефакторинг и добавил полезных функций в slib. Был исправлен и добработано обучение на мобильных устройствах.