Unity使用技巧集合#5
时间:2020-02-06 09:07:33 热度:37.1℃ 作者:网络
说明
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!");
}
}}