-------物件腳本屬性 C#-------
---更改Inspector 腳本GUI顯示(C#)--------
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Biochemical_Single : ObjectClass {
// 物件模式
public enum SelectObj
{
roteObj,
moveObj,
}
public SelectObj objsType;
// 物件行為方向
public enum Direction
{
forward,
up,
down,
left,
right,
}
public Direction direction;
public Transform tramsform;
public float moveSpeed, roteSpeed; // 物件行為速度
// Update is called once per frame
void Update () {
switch (objsType)
{
case SelectObj.moveObj:
Move(tramsform, driectionFunction(direction), moveSpeed);
break;
case SelectObj.roteObj:
Rote(tramsform, driectionFunction(direction), roteSpeed);
break;
}
}
///
/// 方向
///
///
///
Vector3 driectionFunction(Direction direction)
{
Vector3 vector3 = Vector3.zero;
switch (direction)
{
case Direction.forward:
vector3 = Vector3.forward;
break;
case Direction.up:
vector3 = Vector3.up;
break;
case Direction.down:
vector3 = Vector3.down;
break;
case Direction.left:
vector3 = Vector3.left;
break;
case Direction.right:
vector3 = Vector3.right;
break;
}
return vector3;
}
}
using UnityEngine;
using UnityEditor;
using System;
[CustomEditor(typeof(Biochemical_Single))] // 更改 Inspector 腳本
public class MyScriptEditor : Editor {
override public void OnInspectorGUI()
{
var script = target as Biochemical_Single;
script.objsType = (Biochemical_Single.SelectObj)EditorGUILayout.EnumPopup("select Obj", script.objsType);
script.direction = (Biochemical_Single.Direction)EditorGUILayout.EnumPopup("direction", script.direction);
script.tramsform = EditorGUILayout.ObjectField(script.tramsform ,typeof(Transform), true) as Transform;
if (script.objsType == Biochemical_Single.SelectObj.roteObj)
{
EditorGUI.indentLevel++;
EditorGUILayout.PrefixLabel("roteSpeed");
script.roteSpeed = EditorGUILayout.Slider(script.roteSpeed, script.roteSpeed, 999);
EditorGUI.indentLevel--;
}
}
}
--------執行結果---------Select Obj 選擇項目 : Rote Obj
Select Obj 選擇項目 : Move Obj