【Unity】ImporterSettingのメモ
仕事でUnity5.4でテクスチャの自動設定など作っていましたが、5.5で項目がかなり変わったのがトラウマでバージョンが上がるたびにImporterSettingをチェックしてるんです。
各バージョンのImporterSetting事情をまとめることで自分が幸せになれると思い、かなり雑にスクショまとめてました。(雑過ぎてバージョンが正しいかどうか不安です)
新しいバージョンがリリースされるたびにちゃんと更新していく予定。
ImporterSettingのメモ
Audio
Model
Texture
【Unity】TextureImporterSettingを観察
結構変化あるんじゃないかと思ってみてたけど、5.5の時のような劇的な変化は見られず
並んでるスクショは左から5.5→2017.3です。
TextureTypeごとにまとめてみる。
Inspectorスクショ
Default
2017シリーズでGenerateMipMap関連にいくつか項目が追加
NormalMap
変化はなし。
Sprite
5.6からNon Power Of Twoが追加された。
LightMap
変化なし。
Cookie
5.5で編集できなかった項目が5.6から消滅したぐらいで変化なし。
Cursor
comming soon...
EditorGUI
comming soon...
Platform設定
Resize Algorighmが2017.2から追加された。
【Unity】ModelImportSettingを観察
2017あたりから活発に設定できる項目が増えている様子。
並んでるスクショは左から5.5→2017.3です。
Inspectorスクショ
Model設定
5.5→5.6でUse File SizeとWeld Verticiesが増えている。
2017シリーズでいろいろと項目が増え、2017.2からMaterial項目が別タブに分離、2017.3で一項目追加。
Rig設定
特に変化は確認できず
Animation設定
2017.2からAnimated Custom Propertyが追加されている。
Material設定
2017.3でOnDemandRemapが追加されている。
【Unity制作日記】Shaderを勉強するぞい
海外のShader解説動画を眺めてると、その説明のわかりやすさに自分にもできそうって気がしてくるので怖いですね。(全然理解できてない顔)
サンプルコードが理解できるようになったらちゃんとまとめたいです。
【Unity制作日記】CustomEditorでしくじった話
進捗が非常に遅いですが、UnityEditorMemo ver2.0の開発が進んでいます。途中でCustomEditorに関して学び(失敗)があったのでメモしておきます。
SceneViewにメモを表示する
Hierarchy上にあるGameObjectに対してメモすることができます。選択中のGameObjectのメモをSceneView上に表示する機能を作ったら便利かなと思い実装を試みました。
CustomEditorのOnSceneGUIで表示
Hierarchy上にあるものは必ずGameObjectを持っています。なので、GameObjectのCustomEditorを作成することでSceneView上にメモを表示しようと考えました。UnitySceneMemoはGameObjectのLocalIdentifierInFileをキーにしているので、この方法はとても最適だと思いました。実現できたので大満足(⋈◍>◡<◍)。✧♡
ところがこの時事件は起こっていたのです
お気づきでしょうか・・・いつもGameObjectのアクティブなどをいじる場所がなくなって違う表示になってしまいました。普段EditorWindowばっかりいじっているため、Inspectorがおかしくなったのに気が付いたのが時間が空いてからだったので何が原因かわからず、UnityをインストールしなおしたりProject作り直したりしてしまいました。
原因はお察しの通り、GameObjectのCustomEditorでした。
GameObjectのCustomEditorは良くないのである
GameObjectのCustomEditorではOnSceneGUIしか記述していませんでした。GameObjectのInspectorがおかしくなったのだから、GameObjectのCustomEditorでOnInspectorGUIをoverrideしてbase.OnInspectorGUI()をすれば直るのかな?と思いましたが直らず。GameObjectがだめならTransformでいいじゃない!とトライしてみましたが、TransformのInspectorもいつもと違う表示になってしまいました。
解決策はないか、色々と検索をしてみました。
もうお気付きかもしれませんが他のスクリプトファイルでCustomEditor(typeof(Object))を使用している場合、どちらか一方のCustomEditorのみ使用されます
github.com
The "GameObjectInspector" class as well as the "TransformInspector" class are internal classes inside the UnityEngine.dll which you can't access without using massive reflection.
You really should avoid replacing the inspector of any built-in object, especially if you plan to release your editor extension for others. It was never intended and isn't recommended to replace the GameObject or Transform inspector.
answers.unity.com
以上のことから、
- もしユーザーがCustomEditor(typeof(GameObject))を使っていたら、ユーザーに不都合が生じる
- GameObjectのInspectorに影響のあるエディタ拡張はリリースすべきではない
解決策どころか、そもそもの考え方が良くなかったのですね。
Editor拡張の巨匠たちの言葉により、ほかの人に配布するAssetならばGameObjectに限らずUnityAPIのCustomEditorは非推奨であることを学びました。もちろん該当APIの拡張がメインならよいと思うのですが、UnityEditorMemoようなAssetがやるべきでないなと思います。
今後はこういうことに注意しながら作ろうと思いました。
結局SceneViewの件はどうするの?
メインの話じゃないですが・・・こちらを参考にonSceneGUIDelegateを使いました。(最初からこっち使えばよかったのに)もう少しGUI周りを詰めていければと思います。さて年内提出ができるか否か( ^)o(^ )
tsubakit1.hateblo.jp