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

Перерисовываем инспектор - класс PropertyDrawer

Конечно, мы уже умеем перерисовывать инспектор с помощью класса Editor, но это далеко не единственный способ его изменения.
Если класс Editor порождал новый интерфейс для отдельного объекта, то класс PropertyDrawer, о котором пойдет речь - влияет на стандартное рисование объектов типа, подменяя его.
Например, вы можете изменить отображение всех стандартных полей int, описав его PropertyDrawer.

На примере предыдущей главы:
CustomEditor класса Unit - это его кишки. Туда можно крепить превью, ссылаться на OnSceneGUI (рисование в сцене). Это происходит, когда объект непосредственно выбран.
PropertyDrawer класса Unit - это его обертка. Например, если какой-либо другой класс имеет поле типа Unit. То есть объект не выбран сам по себе, но отображается как часть чего-то другого.

Не будем бегать вокруг да около и изучим тело классов PropertyDrawer на примере:

Editor: IntDrawer.cs
using UnityEditor;
using UnityEngine;

[CustomPropertyDrawer(typeof(int))]
public class IntDrawer : PropertyDrawer
{
    public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
    {
        
    }

    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        
    }
}

Такой класс во всех случаях должен:
* наследоваться от PropertyDrawer
* иметь атрибут [CustomPropertyEditor(typeof(<Наш класс, который будем перерисовывать>))]

Метод GetPropertyHeight позволяет вам изменить высоту элемента, если это необходимо. Однако, дописывать его вовсе не обязательно, зачастую хватает и стандартной "полоски".

Метод OnGUI, как вы могли догадаться - рисует элемент.

Значение напрямую использовать увы не получится, оно лежит в объекте property класса SerializedProperty. Данный класс позволяет хранить значение без указания конкретного типа и при этом его не "потерять".

Рассмотрим принцип действия на примере

Editor: пример IntDrawer.cs
using UnityEditor;
using UnityEngine;

[CustomPropertyDrawer(typeof(int))]
public class IntDrawer : PropertyDrawer
{
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        property.intValue = EditorGUI.IntField(position, "Тестируем изменения", property.intValue);
    }
}

В результате для всех стандартных инспекторов тип int будет отображаться с лейблом "Тестируем изменения". //Я конечно мастер практически бесполезных примеров, не правда ли?
Вот стандартный инспектор из старого примера с классом Unit:

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

Вот такая маленькая, но полезная фича (уж поверьте на слово!) предоставляется этим классом. Полезная она хотя бы потому, что в отличие от полей класса CustomEditor она так же позволяет работать с простыми классами, которые не наследуются от UnityEngine.Object.

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


Комментарии

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

Справка