はじめに
kigです.プロトスプリントリーグで学んだことを自分のメモと共にまとめます.
今回が最終回です!
再掲
今回のプロトスプリントリーグで開発したゲームは↓になります,ぜひプレイしてね.
UnityRoom: ChargeCat
対象者
Unityの入門書を読み終えた後に,実際に何か開発したことがある方におすすめです.
まだ何も作ってないよという方でも,一度読んでみて,「これ実装したいけどなんかあの記事であったような...」となってもらえれば嬉しいです.
目次
1. Interface
2. Abstruct
3. ScriptableObject
おわり
1. Interface
参考サイト;C# インターフェースを使う実例
インターフェースを使用するメリットは,継承さえすれば,最低限実装しなければいけない関数の実装を忘れることがなくなる(実装していなければエラーになるため)ことだと思います.
+α:Generic(ジェネリック)まとめ
↑関数定義時に,型を指定せず,呼び出す時にこちらで指定する方法.
2. Abstruct
こちらもほぼインターフェースと同じと考えています.interfaceとabstructの違いについては,下記サイトが参考になります.
abstract(抽象)クラス、Interfaceはどう使い分けるべきか
abstructは,そのabstructを継承するオブジェクトたちが,共通して使いたい関数がある際に使用します.(継承前に関数の内容が実装できるもの)
interfaceは,そのinterfaceを継承するオブジェクト側で,継承した関数の中身を実装します.という認識です!!難しい.
チーム開発で,この種類のオブジェクトには最低限この関数たちを実装してほしい!というのがある時は,実装忘れを防ぐためにも,interfaceまたはabstructを使用すると実装ミスが起こらなそう.また,いちいち同じような関数書くなと感じたらabstructを使うのが良さそうです.
3. ScriptableObject
アイテムのデータベースとして,事前にアイテムの名前,価格,説明文などを用意しておいて,後から参照するときに使えそうです.動画内でも紹介されているように,配列を使用する際は,要素数ではなく,アイテム名(Type)で配列の中身を参照できるのもgood.
[CreateAssetMenu]
public class ItemDatabaseSO : ScriptableObject
{
public List<ItemData> itemDatas = new List<ItemData>();
}
[System.SerializeField] // ItemDataの各値をUnityで設定できるようにする
public class ItemData
{
public string name;
public int price;
public Sprite sprite;
[TextArea]
public string text;
}
public class GameManager : MonoBehaviour
[SerializeField] ItemDatabaseSO itemDatabaseSO;
private void Start()
{
Debug.Log(itemDatabaseSO.itemDatas[0].name); // 参照する
}
チーム開発のプロジェクトでよく見た,水色の四角+{}のアイコンの正体はこれでした.
シングルトンたちとの使い分け方も,実際に開発で使ってみてから考察したいところです.
おわり
なんか第3弾の内容が薄い気がしますが,第1弾からたくさんインプットすることができました!!今開発しているゲームにも使えそうなことがたくさんあるので,実際に使ってみるのが楽しみです.今後学んだことを使用していく中で,新たに気づいたことがあればまた記事にしてみようと思います.
改めて,社員さんや今回お話しできた方,チームメンバーへ,ありがとうございました!
皆様良いゲーム開発Lifeを!!!!!