使用情境/需求:
(建議看影片比較好懂…)
編輯的時候希望看到全部的物件,正式玩遊戲的時候又希望關掉某些物件一開始不要啟動。同時這些物件若啟動之後會有圖片漸漸浮現的效果,所以這些正式玩遊戲時要關掉的物件同時也要改成全透明
省時間,省麻煩,加速開發時程
如何自訂檢視器
a.一個繼承自monobehaviour的c#腳本
b.還有繼承自Editor的c#腳本,同時要放在指名為Editor資料夾裡
快速鍵
Array的項目欄位可以按Shift+Delete 清空或刪除
Selector.cs (放在某個game object底下)
SelectorEditor.cs (要放到Editor資料夾裡, 不用放在某個game object底下)
Selector.cs (放在某個game object底下)
using UnityEngine;
using System.Collections;
using UnityEditor;
public class Selector : MonoBehaviour
{
public string 註解 = "註解";
public GameObject [ ] 遊戲物件清單;
public void 開啟物件 ( GameObject 項目 )
{
項目.SetActive ( true );
}
public void 開啟物件 ( GameObject [ ] 遊戲物件清單 )
{
foreach ( var 項目 in 遊戲物件清單 )
{
if ( 項目 != null )
{
開啟物件 ( 項目 );
}
}
}
public void 關閉物件 ( GameObject 項目 )
{
項目.SetActive ( false );
}
public void 關閉物件 ( GameObject [ ] 遊戲物件清單 )
{
foreach ( var 項目 in 遊戲物件清單 )
{
if ( 項目 != null )
{
關閉物件 ( 項目 );
}
}
}
public void 修改透明度 ( GameObject 項目 , float 透明度 )
{
SpriteRenderer 顏色渲染器 = 項目.GetComponent<SpriteRenderer> ( );
Color 顏色 = 顏色渲染器.color;
顏色.a = 透明度;
顏色渲染器.color = 顏色;
}
public void 改透明 ( GameObject 項目 )
{
修改透明度 ( 項目 , 0 );
}
public void 改透明 ( GameObject [ ] 遊戲物件清單 )
{
foreach ( var 項目 in 遊戲物件清單 )
{
if ( 項目 != null )
{
改透明 ( 項目 );
}
}
}
public void 改實色 ( GameObject 項目 )
{
修改透明度 ( 項目 , 1 );
}
public void 改實色 ( GameObject [ ] 遊戲物件清單 )
{
foreach ( var 項目 in 遊戲物件清單 )
{
if ( 項目 != null )
{
改實色 ( 項目 );
}
}
}
public static void 選擇場景內物件 ( GameObject [ ] 遊戲物件清單 )
{
Selection.objects = 遊戲物件清單;
}
}
=======================SelectorEditor.cs (要放到Editor資料夾裡, 不用放在某個game object底下)
using UnityEngine; using System.Collections; using UnityEditor; [CustomEditor(typeof(Selector))] public class SelectorEditor : Editor { public override void OnInspectorGUI ( ) { Selector selector = ( Selector )target; DrawDefaultInspector(); EditorGUILayout.BeginHorizontal(); if ( GUILayout.Button("透明+關閉") ) { selector.改透明 ( selector.遊戲物件清單); selector.關閉物件 ( selector.遊戲物件清單 ); } if ( GUILayout.Button ( "實色+啟動" ) ) { selector.改實色 ( selector.遊戲物件清單 ); selector.開啟物件 ( selector.遊戲物件清單 ); } EditorGUILayout.EndHorizontal ( ); if ( GUILayout.Button("選擇以上物件") ) { Selector.選擇場景內物件 ( selector.遊戲物件清單 ); } } }=======================
影片縮圖的素材:Designed by Freepik
沒有留言:
張貼留言
留言給作者加油打氣