Unityに関連する記事です

 スクリプタブル・オブジェクトはインスペクターよりデータの登録が出来ますが、数が多くなるとスクロールする部分が増えます。
今回は無料のアセットを利用して、スクリプタブル・オブジェクトのインスペクターでの表示方法の変更を実装します。

 この手順は任意ですので、不要である場合には読むだけで構いません。

<実装画像>


<実装画像 Header 情報付き>



手順21 −スクリプタブル・オブジェクトのインスペクター表示の変更−
36.OneLine アセットをインポートする
37.スクリプタブル・オブジェクト用のスクリプトを修正する


 新しい学習内容は、以下の通りです。

 ・OneLine アセット
 ・OneLine 属性、OneLineWithHeader 属性



36.OneLine アセットをインポートする

1.OneLine アセット


 Unity のアセットストアに無料で提供されているアセットです。
このアセットをインポートすることで、スクリプト内に新しい属性情報の宣言を行うことが出来るようになります。
 
 この属性情報の宣言はスクリプタブル・オブジェクト用の専用属性です。
List としてクラスを管理している変数に対して宣言を行うと、スクリプタブル・オブジェクトのデータを登録する際のインスペクター表示が
Element 単位で横方向に並べて表示出来るようになります。

 スクリプタブル・オブジェクトのインスペクターから登録するデータが増えていく場合には見やすく、管理がしやすくなる機能です。


<実装前 通常のインスペクター状態>



<実装後 Header 情報付き>



 この属性情報はスクリプタブル・オブジェクトであればどのスクリプタブル・オブジェクトにも付与して利用することが出来ます。

 まずは最初にこの機能を実装するための OneLine アセットのインポートを行い、その後、スクリプタブル・オブジェクト用のスクリプトの修正を行って実装を行います。


2.アセットストアへ移動する


 Unityの公式のアセットストアから、対象の無料のアセットをダウンロードしてインポートしていきます。


<インポートするアセット一覧>
1.OneLine ースクリプタブル・オブジェクトの Element の表示を1列に表示するユーティリティ用アセットー


 Unityのメニューから Window => Asset Store を選択します。AssetStoreビューがSceneビューの隣に作られます。
Search online ボタンを押してアセットストアのサイトへ移動してください。(2020.1バージョンからこのような形式に変更になりました)


AssetStoreビュー


 もしもサイトへ移動できない場合には、以下のリンクから直接移動してください。
UnityAssetsStore 日本語ページ
https://assetstore.unity.com/?locale=ja-JP
 

3.アセットストアでインポートするアセットを検索する


 「OneLine」アセットをアセットストアで見つけます。
アセットストアのサイト上部にある検索窓に OneLine と入力して検索を行います。

 OneLine という無料のアセット群が見つかりますので、クリックして選択します。


OneLine



 このアセットをクリックするとアセットの詳細が画面に表示されますので、 画面の右側にある Add to My Assets という青いボタンを押します。

詳細画面 Add to My Assets (青いボタン)


 ストアへサインインしていない場合にはUnityのアカウントでのサインインを求められますので、自分のアカウントを利用してストアへサインインしてください。


 このとき確認メッセージが表示される場合には、Accept を選択して進めてください。



 
 再度ページが読み込まれて、先ほどのボタンのメッセージが変わり、 Open in Unity となりますので、またこの青いボタンを押します。
あるいは、画面の上部にウインドウが表示されて、その中に Open in Unity のボタンがありますので押します。
(Unity のバージョンによっては、このように異なる手順で Opne Unity と表示される場合もありますが、内容は同じです)

=> Open Unityを押してUnityエディターへ移動する


 自動的にUnityのエディター画面に遷移します。サイトはまた後で他のアセットのダウンロードに利用するので、そのままにしておいてください。


4.アセットをUnityにインポートする


 対象のアセットが Unity Editor 内の Package Manager ビューに表示されていますので、Download => Importを選択して、インポートしてください。


PackageManagerビュー Download



 Download が終了すると左隣にある Import というボタンが押せるようになりますので、そちらを押します。

PackageManagerビュー◆Import



 インポートするアセットの一覧がポップアップウインドウとして表示されます。
このとき、Example というフォルダのチェックのみを外してください。このフォルダ内の情報をインポートするとエラーが表示されます。
他のフォルダはチェックが入っているままで問題ありません。

 その後、ウインドウ内の右下にある Import ボタンを押します。


Import確認のポップアップ



※重要 Example フォルダのチェックは外す



 Project内を確認しましょう。OneLine という新しいフォルダが追加されていれば無事にインポートされています。
また Editor フォルダがない場合には自動的に作成されて、その中に設定用のファイルが追加されます。

 OneLine フォルダを順番に開いていくとたくさんのフォルダとファイルが追加されています。(画像の青い部分が今回インポートされたアセットです)


OneLine



 以上でアセットのインポートは完了です。


37.スクリプタブル・オブジェクト用のスクリプトを修正する

1.設計


 OneLine アセットをインポートしましたので、スクリプト内でスクリプタブル・オブジェクト専用の属性情報の宣言が行える状態になりました。

 どのスクリプタブル・オブジェクトでも設定できますので、今回は ItemDataSO スクリプトを修正して、インスペクターの表示方法を変更してみます。


2.ItemDataSO スクリプトを修正する


 OneLine アセットの機能である OneLine 属性を利用するには using での宣言が必要になります。

 あとはスクリプタブル・オブジェクトとしての機能を有している List 変数の上に
OneLine 属性、あるいは OneLineWithHeader 属性のいずれかの宣言を追加してください。

  と の部分です。これはいずれのスクリプタブル・オブジェクトに利用する場合でも同じです。


ItemDataSO.cs

<= クリックすると開きます。


 スクリプトを修正したらセーブを行います。



 Unity のバージョンによっては OneLine 属性を追加すると Console ビューにエラーメッセージが表示されます。


Console ビュー



 製作者の方のサイトによると機能には何も問題のないエラーとのことですので、このエラーは表示されていてもゲームを実行できます。
もしも表示された場合には Clear を押して削除してください。何回も出るかもしれませんが、その場合も削除すれば問題ありません。


3.<OneLine 属性、OneLineWithHeader 属性>


 OneLine アセットをインポートすることで宣言することが出来るようになる属性情報です。

 OneLine 属性が基本で、OneLineWithHeader 属性は OneLine 属性の拡張版という位置づけです。

 どちらの属性も、インスペクターの Element 内のクラス情報の表示が横一列方向に並ぶようになります。


<OneLine 属性>




 OneLineWithHeader 属性の場合、OneLine 属性の機能に加えて、クラス内の変数名が自動的にヘッダー情報として表示されるようになります。


<OneLineWithHeader 属性>



 どちらを利用しても構いませんので、自分の好みで選択してみてください。
なお、クラス内の各変数に付与されている Header 属性があった場合は反映されませんので、残念ながら表示されません。

<クラス内の変数の Header 属性は OneLine WithHeader 属性でも表示されない>
  public class ItemData {
     [Header("アイテムの通し番号")]  //  <=  ここは設定してあっても OneLine 属性、および OneLineWithHeader 属性でも表示されません。
     public int itemNo;              // アイテムの通し番号


4.スクリプタブル・オブジェクトのインスペクターを確認する


 スクリプトを修正してセーブをすれば自動的にインスペクターに反映されます。

 Assets / Datas フォルダにある ItemDataSO スクリプタブル・オブジェクトを選択してインスペクターを確認してください。
上記の画像のように表示方法が変更になっていれば制御成功です。

<実装前 通常のインスペクター状態>

 
 ↓

<実装後 OneLineWithHeader 属性の場合(Header 情報付き)>




 インポートした OneLine アセットに含まれているスクリプトの内部を調べていくことで、
Element の縦幅(Height) については変更することが可能です。残念ながら横幅については自動調整になっています。

 OneLinePropertyDrawer スクリプトの GetPropertyHeight メソッドを確認してみてください。





 以上でこの手順は終了です。

 次は 手順22 −所持しているアイテムのセーブ・ロード機能の追加− です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます