創作內容

0 GP

InputManagertoEnum【Unity 輸入設定轉Enum】

作者:Funcy│2017-11-18 23:45:46│巴幣:0│人氣:343
今天測試了一下
Unity如何取得 InputManager 的內容
並撰寫了把 InputManager Axes 轉成 Enum 形式的外掛

一樣放上了GitHub 歡迎一起研究

影片過程:

這是ScriptableObject 中的 Editor

這個 Editor 是抓取專案夾底下的 InputSetting 產生的列表
方便看現在有哪些Input Axes
並在Input Setting改變時,自動更新列表與Enum

其【動態產生】出的Enum Input回傳方法 如下:


曾經試過如果只動態產生InputButton Enum 會發現 Unity無法視這個 .cs檔為Mono的成員
因此在其他腳本要抓InputButton Enum時會沒有反應
所以如果要動態產生 .cs檔 請記得 一定要給他一個 using UnityEngine;

接下來Coding的流程就來啦~

  1.取得 ProjectSettings/InputManager.asset 的內容
  2.將內容置入到自己定義的 class : InputAxes
  3.用 InputAxes List 動態產生出需要的 Enum : InputManagerEnum

這是自己定義 InputAxes 的內容


【主程序】main => OnInspectorGUI()


這邊先放上DrawInputManagerAxes 原因是自己覺得這個比較適合先放

#使用GetType().GetFields() 來避免需要一個一個變數指定的情況

【1.取得 ProjectSettings/InputManager.asset 的內容】+
【2.將內容置入到自己定義的 class : InputAxes

#開始之前先來確認InputManager.asset  到底長啥樣

我們可以觀察到 從 "m_Axes:"之後的部分是我們需要的內容





使用WWW讀取ProjectSettings/InputManager.asset內容
並把字串處理到InputAxes

【3.用 InputAxes List 動態產生出需要的 Enum : InputManagerEnum




後來發現有個最根本的問題 就是Enum 不允許有空白
所以只要InputSetting有空白的都不可行
Mouse XMouse Y

這點後來想到一個解法
就是把空白字元用_來取代
但是Code中有取代空白的部分得另外判斷了
所以此篇一定會有後續更新

2017/11/19更新
修正了 空白字元用_來取代
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3793475
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★w96396355557 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:自動上色系統 【HSV演... 後一篇:Unity 5 可客製化...

追蹤私訊切換新版閱覽

作品資料夾

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】