Unity3d 2017.3 自定義編輯器 列舉 隱藏與顯示
今天第一次自定義編輯器,記錄一下心得。
1.在Editor資料夾下建立一個指令碼,將此指令碼與想自定義編輯器的指令碼繫結
2.在OnEnable()方法中獲取原指令碼中,需要操作的物件。
3.OnInspectorGUI()中,EditorGUILayout.PropertyField(Enemy);方法的先後順序,決定了編輯器中排列的先後順序。
4.如果需要下拉選單,請定義列舉型別
5.最後,不要忘了test.ApplyModifiedProperties();將之前的程式碼應用。
using UnityEngine; using UnityEditor; [CustomEditor(typeof(EnemyAI))]//關聯修改的指令碼 public class NewBehaviourScript1 : Editor { //序列化 private SerializedObject test; //各個公開變數 public SerializedProperty Enemy; private SerializedProperty Player; private SerializedProperty ChooseEnemyPattern; private SerializedProperty ChooseEnemyType; private SerializedProperty PatrolA; private SerializedProperty PatrolB; private SerializedProperty LaserTX; private SerializedProperty ATInterval; private SerializedProperty EnemyAttackRange; private SerializedProperty EnemyMoveSpeed; private SerializedProperty EnemyRotateSpeed; void OnEnable() { //獲取到相關物件 test = new SerializedObject(target); //獲取選擇 ChooseEnemyPattern = test.FindProperty("ChooseEnemyPattern"); //獲取各個公開變數 Enemy = test.FindProperty("Enemy"); Player = test.FindProperty("Player"); ChooseEnemyType = test.FindProperty("ChooseEnemyType"); PatrolA = test.FindProperty("PatrolA"); PatrolB = test.FindProperty("PatrolB"); LaserTX = test.FindProperty("LaserTX"); ATInterval = test.FindProperty("ATInterval"); EnemyAttackRange = test.FindProperty("EnemyAttackRange"); EnemyMoveSpeed = test.FindProperty("EnemyMoveSpeed"); EnemyRotateSpeed = test.FindProperty("EnemyRotateSpeed"); } public override void OnInspectorGUI() { test.Update();//更新test //各個模式下均公開的變數 EditorGUILayout.PropertyField(Enemy); EditorGUILayout.PropertyField(Player); EditorGUILayout.PropertyField(ChooseEnemyType); EditorGUILayout.PropertyField(ChooseEnemyPattern); if (ChooseEnemyPattern.enumValueIndex == 0)//AT模式下公開的變數 { EditorGUILayout.PropertyField(PatrolA); EditorGUILayout.PropertyField(PatrolB); EditorGUILayout.PropertyField(LaserTX); EditorGUILayout.PropertyField(EnemyAttackRange); EditorGUILayout.PropertyField(EnemyMoveSpeed); } else if (ChooseEnemyPattern.enumValueIndex == 1)//MT模式下公開的變數 { EditorGUILayout.PropertyField(LaserTX); EditorGUILayout.PropertyField(ATInterval); EditorGUILayout.PropertyField(EnemyAttackRange); EditorGUILayout.PropertyField(EnemyMoveSpeed); EditorGUILayout.PropertyField(EnemyRotateSpeed); } test.ApplyModifiedProperties();//應用 } }
選擇AT之後
選擇MT之後
相關推薦
Unity3d 2017.3 自定義編輯器 列舉 隱藏與顯示
今天第一次自定義編輯器,記錄一下心得。 1.在Editor資料夾下建立一個指令碼,將此指令碼與想自定義編輯器的指令碼繫結 2.在OnEnable()方法中獲取原指令碼中,需要操作的物件。 3.OnInspectorGUI()中,EditorGUILayout.Propert
「Unity3D」(9)自定義編輯器選單擴充套件總結
新增選單 [MenuItem("Tools/MyOption")] private static void MyOption() { // 自定義選單Tools } [MenuItem("Tools/Sub/MyOption")] priva
Unity3D 自定義編輯器介面(Inspector)
今天看一個指令碼,本想看看在 Inspector 介面的變數在腳本里的用途,然後查詢變數名的時候怎麼也找不到,自己也是驚訝。通過網上搜索才瞭解到原來 Inspector介面 是可以自己定義的。 當然自己定義,當然也需要寫一個指令碼來改的。可能是為了讓介面整潔的目的。 首先
@InitBinder裝配自定義編輯器
format init imp ini con edit r.java 自定義 class @InitBinder裝配自定義編輯器 第一步:BaseController.java,標註@InitBinder public class BaseController
Unity 自定義編輯器窗口 畫線
狀態 nbsp ongui shmat 定義 技術 load oid clas 最近在學習狀態機, 想自己實現一個可視化編輯器, 需要將多個狀態之間用線條連接起來, 效果如下: 代碼如下: Material m;Vector2 start;Vector2 end
eclipse rcp 解決自定義編輯器editor重複開啟的問題
參考部落格:https://blog.csdn.net/linuxchyu/article/details/16984737 在eclipse rcp程式設計中,我們經常會自定義編輯器用於開啟自定義的檔案,會遇到每次雙擊檔案都開啟編輯器的問題,如何解決這個問題呢,我所知道的有兩種方法: 方法
Unity 自定義編輯器視窗的使用
Unity 自定義編輯器視窗功能強大,可以實現所有希望實現的功能。我在近期的專案中仿照魔獸爭霸3開發了一套簡單的遊戲單位功能元件,其中包括單位資料、移動方式、動畫播放、武器系統等等。如果用傳統的Inspector來修改各項屬性十分不方便,所以實現一個簡單直觀的自
canvas自定義編輯器
// 獲取視訊資訊 var oVideo = document.querySelector('#video'); // 獲取播放暫停按鈕 var oStopToP = document.querySelector('.stopToP'); var oPlayToS =
Wordpress之二__自定義編輯器按鈕
做一個很簡單的功能 框架上大概就是新增一個快捷鍵 編輯文章的時候,可以在文章頭加上鍊接,例如: =================== 明日花->2015 bababalabala ,bala, =================== 首先想到的當然是- 1.wo
【Unity3D5.6版本使用(1)】自定義編輯器獲取場景所有物件Tag生成Json
在unity3D5.x版本中,一部分以前的程式碼無法正常執行,比如:載入場景時,使用Application.loadedLevel會提示“已過時”,需要使用EditorSceneManager.OpenScene(FileName[scount]);所以寫一篇記
vivado設定自定義編輯器與notepad++設定高亮方法
vivado2015.03下tools->option->general->text editor -> 選擇custom editor, 右邊的 ... 瀏覽按鈕,如下圖
拓展編輯器功能--Unity自定義編輯器視窗
最近學習了Unity自定義編輯器視窗,下面簡單總結,方便用到時回顧。 新建一個指令碼: using UnityEngine; using System.Collections; using Unit
[Unity編輯器]自定義編輯器介面
編輯器GUI類 1.GUI、GUILayout 2.EditorGUI、EditorGUILayout 編輯器類(指令碼要放在Assets/Editor資料夾中,要使用UnityEditor的名稱空間): 1.EditorWindow(重點是OnGUI()的編寫) u
Spring整理3 -- 自定義屬性編輯器
在我們注入屬性時,遇到是日期型別,如果按普通屬性去注入,則會報錯,那我們該怎麼解決?解決辦法:自定義屬性編輯器。 什麼是屬性編輯器,作用? 自定義屬性編輯器,spring配置檔案中的字串轉換成相應的物件進行注入spring已經有內建的屬性編輯器,我們可以根據需求自己定義屬性編
spring boot框架學習7-spring boot的web開發(3)-自定義消息轉換器
spring boot 凱哥java本章節主要內容:通過前面的學習,我們了解並快速完成了spring boot第一個應用。spring boot企業級框架,那麽spring boot怎麽讀取靜態資源?如js文件夾,css文件以及png/jpg圖片呢?怎麽自定義消息轉換器呢?怎麽自定義spring mvc的配置
(12)Reactor 3 自定義數據流——響應式Spring的道法術器
響應式編程 Spring WebFlux 本系列文章索引《響應式Spring的道法術器》前情提要 響應式流 | Reactor 3快速上手 | 響應式流規範本文源碼 2.2 自定義數據流 這一小節介紹如何通過定義相應的事件(onNext、onError和onComplete) 創建一個 Flux 或
類的學習筆記(3)——自定義裝飾器及裝飾器的理解
例一: 實現多加100 def fun1(x): def fun2(y): return x(y)+100 return fun2 #裝飾器 def ff(y): return y*y
自定義資料型別 --- 列舉型別全解(swift2.3)
自定義資料型別 — 列舉(swift) 下面簡單的介紹列舉這一自定義資料型別的應用 列舉的基本語法 列舉中rawValue應用 列舉中associatedValue應用 可選型的實質型別就是列舉 列舉的遞迴應用 一:列舉的基礎語法 imp
在struts2中配置自定義攔截器放行多個方法
return med ttr limit ring req tac cat invoke 源碼: 自定義的攔截器類: //自定義攔截器類:LoginInterceptor ; package com.java.action.interceptor; import j
SpringMVC 自定義轉換器
del 轉化 string sna 問題 print request package type 實踐SpringMVC轉化器是遇到的問題:表單提交沒有經過自定義轉換器(解決:表單用post方式提交) 自定義轉化器代碼 package cn.liangqinghai.