danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

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

split97 split97

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

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Unity

Прочие способы воздействия

AssetDatabase

В любой момент создания редакторов вам может понадобиться необходимость использовать ресурсы из проекта. При том - любой ресурс, а не конкретно те, что лежат в папке "/Resources/". Да и мало того, может понадобиться возможность их сохранять.
Для таких целей в Unity предусмотрен класс AssetDatabase. Его возможности довольно-таки широки, и, возможно, стоят даже отдельной статьи, объясняющей разные фичи/баги.

Handles

Вы можете рисовать в сцене и мало того, пользоваться своими манипуляторами, которые позволят визуально редактировать ваш объект (например, именно так устроены стандартные инструменты позиционирования/поворота/масштабирования).
Так, например, CustomEditor поддерживает метод OnSceneGUI, который позволяет рисовать такие штуковины (например при помощи класса Handles).
По этой теме, я опять же считаю, что должна существовать некоторая отдельная статья. Это очень большая тема, о которой можно рассказать значительно больше одной страницы.

InitializeOnLoad

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

Для этих целей нам пригодится атрибут [InitializeOnLoad], которым мы можем пометить любой статический класс, и в этом случае его статический конструктор запустится именно так, как я и написал выше.

Editor: MyEditorInit.cs
[InitializeOnLoad]
public static class MyEditorInit
{
    static MyEditorInit() 
    {
        //Здесь наш код
    }
}

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

По делегатам

update:
Часто бывает, что в редакторе требуется заюзать апдейт, но сделать это просто неоткуда. В таком случае вам поможет делегат EditorApplication.update. И подписываемся мы на него через описанный выше способ.

Editor: MyEditorInit.cs
[InitializeOnLoad]
public static class MyEditorInit
{
    static MyEditorInit() 
    {
        EditorApplication.update += Update;
    }
    
    static void Update() 
    {
        //Код апдейта
    }
}

Важно понимать, что этот метод вызывается приблизительно 100 раз в секунду, и нужно это учитывать при обдумывании его тела.

hierarchyWindowItemOnGUI:
Нельзя обойти стороной делегат EditorApplication.hierarchyWindowItemOnGUI, позволяющий дорисовать объекты в иерархии.
Например, в проекте заказчика я использовал его для быстрого создания объектов:

Прочие способы воздействия — Unity — DevTribe: инди-игры, разработка, сообщество

Подписка этого делегата должна осуществляться на метод с параметрами, как здесь:

static void HierarchyWindowItemOnGui(int instanceId, Rect selectionRect)

windowChanged
Порой необходимо отследить моменты, когда в иерархии или папке проекта что-то поменялось.
Для этого есть два чудесных делегата - EditorApplication.hierarchyWindowChanged и EditorApplication.projectWindowChanged.

sceneView
Для того, чтобы раскрашивать сцену при помощи методов класса Handles можно создавать методы, не привязанные к конкретным объектам и окнам. Делается это при помощи делегата SceneView.onSceneGUIDelegate

Это, конечно, не все делегаты - вы их еще море найдете. Я написал лишь те, которые юзаются чаще остальных.

Unsupported

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

На этом базовый курс по написанию редакторов для Unity я считаю закрытым. Все свободны, можете идти :)

Смотрите также:


Комментарии

Здесь еще никто не оставил комментарий

Справка