0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Unity] 汎用的な自動参照機能を作りたかった

Posted at

概要

表題の通り
実装だけ見たい方はこちら

経緯

運用フェーズに入ってからの改修について、実装の時点である程度考えておかないと後々大変になることがある

例えば、カードの属性を追加したいとなった場合、一般的に以下のような修正が考えられる

  • カードのサムネイルに属性画像などを追加
  • 能力値の計算方法などを追加
  • etc...

スクリプト側の修正は軽微であったが、アセット側の修正に難があった
各シーンやプレハブが各々でアセットの参照を持っていたため、全ての実装を調査しないといけなかった

※宣言しているフィールド名がバラバラ、インナークラスで実装もあり型宣言がバラバラ(一般化できない)
※ScriptableObjectでまとめるという発想はない

そこで自動参照ができれば楽になりそうと思い、特定のフォルダに対してアセットが追加された場合に、フォルダ内のアセットを参照しているアセットに対して追加されたアセットを自動的に足すことを考えた

日本語だと分かりづらいので具体例を出すと、このようなフォルダ階層だった場合(本来はもっと深い階層になりそうだが

Assets
  ∟ Attributes
    attirbute_icon_01.png
    attirbute_icon_02.png
  ∟ ...
  1. Attributesフォルダにattirbute_icon_03.pngを追加した
  2. 01,02を参照しているアセット(シーンやプレハブ)に03の参照が追加される

となる

スクリプト側は以下のように属性を使う
[RefmaticElementLoad("attirbute_icon_", RefmaticComparisons.StartsWith, "Assets/Attributes/")]
[RefmaticExecutableLoad]
[SerializeField]
Sprite[] sprites;

パスを指定するので、(スクリプトだけ見て)アセットがどこにあるかが分かるという副次的な利点も生まれた

経緯の説明はあくまで一例で、他にもいろんなパターンがあると思う

そんなに頻繁に使う機能ではないが、とにかく拡張性を高くしてやれることの幅を広げた...つもり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?