Unity使用技巧集合#5

时间:2020-02-06 09:07:33   热度:37.1℃   作者:网络

原标题:Unity 使用技巧集合 #5

说明

Unity 使用技巧集合会整理和收集 Unity 开发相关的技巧和经验。

本次开发技巧的提供者是独立游戏开发者 Federico Bellucci,本部分内容的翻译已获得他本人授权。

Federico Bellucci 一直在免费提供 Unity 开发技巧和教程,同时也有一些内容需要 Patreon 支持才能获得,如果您喜欢他提供的内容,不妨支持一下。

TextArea

可以将 string 输入设置为 TextArea ,并且可以更改尺寸,更加方便编辑。

Header, Tooltip 和 Space

通过使用 Header , Tooltip 以及 Space ,可以使得 Inspector 更加容易阅读,大家平时可能用 Header 会比较多一些吧。

自定义平台参数 #defines

可以自行定义平台的参数,比如“ CHEATS ”,然后在运行时可以使用特定的代码以符合平台参数,更加便于调试代码。

改变编辑器中拖拽数值的速度

在编辑器中拖拽改变某一数值的时候,同时按下 Alt(变慢)或者 Shift(变快)可以改变数值变化的速度。

MinMax 属性

使用 Federico 自己编写的 MinMax 代码来实现更好的 Min - Max 编辑。

MinMaxAttribute.cs

usingUnityEngine;// ! -> 可以放入除了 Editor 文件夹以外的任何地方// ! -> Put this anywhere, but not inside an Editor Folder// By @febucci : https://www.febucci.com/publicclassMinMaxAttribute:PropertyAttribute{

publicfloatminLimit =0;

publicfloatmaxLimit =1;

publicMinMaxAttribute(intmin,intmax)

{

minLimit =min;

maxLimit =max;

}}

MinMaxDrawer.cs

usingUnityEngine;usingUnityEditor;

// ! -> 放入 Editor 文件夹// ! -> Put this in an Editor folder// By @febucci : https://www.febucci.com/[CustomPropertyDrawer(typeof(MinMaxAttribute))]publicclassMinMaxDrawer:PropertyDrawer{

publicoverridevoidOnGUI(Rectposition,SerializedPropertyproperty,GUIContentlabel)

{

//Asserts that we're using the MinMax attribute on a Vector2

UnityEngine.Assertions.Assert.IsTrue(property.propertyType ==SerializedPropertyType.Vector2,"Devi usare un vector2 per MinMax");

if(property.propertyType ==SerializedPropertyType.Vector2)

{

MinMaxAttributeminMax =attribute asMinMaxAttribute;

//Writes the variable name on the left

RecttotalValueRect =EditorGUI.PrefixLabel(position,label);

//The left value, after the variable name

RectleftRect =newRect(totalValueRect.x,totalValueRect.y,50,totalValueRect.height);

//Rect of the slider

RectvalueRect =newRect(leftRect.xMax,totalValueRect.y,totalValueRect.width -leftRect.width *2-4,totalValueRect.height);

//The right value

RectrightRect =newRect(totalValueRect.xMax -leftRect.width -2,totalValueRect.y,leftRect.width,totalValueRect.height);

floatminValue =property.vector2Value.x;//Current x

floatmaxValue =property.vector2Value.y;//Current y

EditorGUI.MinMaxSlider(valueRect,refminValue,refmaxValue,minMax.minLimit,minMax.maxLimit);

//Assigns the value to the property

property .vector2Value =newVector2(minValue,maxValue);

EditorGUI.LabelField(leftRect,minValue.ToString("F3"));//Writes the value on the left

EditorGUI.LabelField(rightRect,maxValue.ToString("F3"));//Writes the value on the right

}

else

{

GUI .Label(position,"You can use MinMax only on a Vector2!");

}

}}

上一篇: 疫情如何影响楼市?房价会跌吗?调控会放松...

下一篇: 原创加紧生产2亿口罩,把帮助中国当头等大...


 本站广告