teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3109閲覧

ReorderableListと他のプロパティを両方Inspectorに表示したい【Unity】

bibinba

総合スコア6

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/08/20 03:20

編集2020/08/20 03:36

0

0

前提・実現したいこと

ListのInspector表示にReorderableListを使い、なおかつstringなど他のプロパティも表示したいです。

Listは自作クラスで、そのListが含まれるクラスのプロパティは、Listだけでなくboolやstring,Prefab,Colorなど他の要素もあります。

こちらの記事simple-reorderable-list-unityを使い、プロパティがListだけの時はReorderableListで表示することができました。
参考記事:https://synamon.hatenablog.com/entry/2019/06/25/190000
simple-reorderable-list-unity:https://github.com/mochi-neko/simple-reorderable-list-unity

イメージ説明

発生している問題・エラーメッセージ

Listのほかにstringなどのプロパティを書いたとき、InspectorにList以外のプロパティが表示されません。

該当のソースコード

Listの含まれるクラス

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Test : MonoBehaviour 6{ 7 public string Title; 8 9 public List<Blog> BlogList = new List<Blog>(); 10} 11

Editor

C#

1using UnityEditor; 2using UnityEditorInternal; 3using UnityEngine; 4 5namespace Mochineko.SimpleReorderableList.Samples.Editor 6{ 7[CustomEditor(typeof(test))] 8public class ReorderableListEditor : UnityEditor.Editor 9{ 10 11 private ReorderableList reorderableList; 12 13 private void OnEnable() 14 { 15 reorderableList = new ReorderableList( 16 serializedObject.FindProperty("NameList") 17 ); 18 } 19 20 public override void OnInspectorGUI() 21 { 22 serializedObject.Update(); 23 24 EditorGUI.BeginChangeCheck(); 25 { 26 EditorFieldUtility.ReadOnlyComponentField(target as MonoBehaviour, this); 27 28 if (reorderableList != null) 29 reorderableList.Layout(); 30 } 31 if (EditorGUI.EndChangeCheck()) 32 { 33 serializedObject.ApplyModifiedProperties(); 34 } 35 } 36 } 37}

試したこと

simple-reorderable-list-unityを使わずにReorderableListを実装しようとしましたが、
↓の記事を試したときはエラーが出てReorderableListを試せませんでした。
ReorderableList を使ってインスペクタ上でリストや配列の順番を変更する
イメージ説明

↓のツールを使うと、ReorderableListと他のプロパティを両方Inspectorに表示できましたが、自作クラスが使いにくいなど今回の用途にはあっていませんでした。

【Unity】ReorderableListを気軽に使う

今回の一連の作業をメモした記事です。
ReorderableListでListの表示を変えるの大変だった【Unity】

補足情報(FW/ツールのバージョンなど)

Unity2018.4.17

使っているアセット(simple-reorderable-list-unity)特有の問題そうならアセット製作者の方に聞こうと思いますが、Editor拡張の記述を変えれば解決しそうなら教えていただきたいです。
もしくは他に良い参考記事やアセットがあれば教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

この記事をスクリプトのFindPropertyRelativeをFindPropertyにしたら、想定とは少し違いますが一応使えました。

c#

1using UnityEditor; 2using UnityEditorInternal; 3using UnityEngine; 4 5[CustomEditor(typeof(Test2))] 6public class HogeEditor : UnityEditor.Editor { 7 8private ReorderableList reorderableList; 9 10 void OnEnable() { 11 reorderableList = new ReorderableList(serializedObject, 12 serializedObject.FindProperty("BlogList") 13 ); 14 } 15 16 17 public override void OnInspectorGUI () { 18 19 DrawDefaultInspector(); 20 21 serializedObject.Update (); 22 23 reorderableList.DoLayoutList(); 24 25 serializedObject.ApplyModifiedProperties(); 26 } 27}

このように、Inspectorの一番下にReordableList表示が追加されます。
上の普通のリスト表示と動きは同期しているので、内容は上のリストに書いて、順番を変えたり要素の追加消去はReordableListで変更できるようになりました。
イメージ説明

投稿2020/08/25 00:27

bibinba

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問