Gamerch
あかさ

クラスで物体を指定したい

最終更新日時 :
1人が閲覧中
作成者: ユーザー98083
最終更新者: ユーザー98083

使うプログラムでプレハブを渡す

public class スライム : 敵キャラ

{

public スライム(GameObject プレハブ)

{

HP = 10;

攻撃力 = 3;

物体 = プレハブ;

}

}


使うプログラム

public GameObject スライムプレハブ;

敵 = new スライム(スライムプレハブ);


ScriptableObjectを使う

[CreateAssetMenu(menuName = "敵/スライム")]

public class スライムデータ : ScriptableObject

{

public int HP;

public int 攻撃力;

public GameObject 物体;

}


使用例

public class 敵生成 : MonoBehaviour

{

public スライムデータ slimeData;

public ゴブリンデータ goblinData;

public ゴーレムデータ golemData;


void Start()

{

敵データ 敵 = ランダム敵();


Instantiate(敵.物体, new Vector3(0,2,8), Quaternion.identity);

敵.攻撃();

}


敵データ ランダム敵()

{

int A = Random.Range(1, 4);


if (A == 1) return slimeData;

if (A == 2) return goblinData;

return golemData;

}

}


別ファイル

using UnityEngine;


public abstract class 敵データ : ScriptableObject

{

public int HP;

public int 攻撃力;

public GameObject 物体;


public abstract void 攻撃();

}



public class スライムデータ : 敵データ

{

private void OnEnable()

{

if (HP == 0) HP = 10;

if (攻撃力 == 0) 攻撃力 = 3;

}


public override void 攻撃()

{

Debug.Log("スライムの体当たり! ダメージ:" + 攻撃力);

}

}


ゴブリンやゴーレムも同じように作る


説明

if (HP == 0) HP = 10;

スクリプトテーブルはインスペクターで値を自由に変更できる

変更しても OnEnable の初期値に上書きされない(0 のときだけセット)


[CreateAssetMenu(menuName = "敵/スライムデータ")] の「敵」は “Unity のメニューに表示されるフォルダ名” であって、プログラム上のクラス名や変数名とは無関係。

自由に決めていい カテゴリー名 。

コメント (クラスで物体を指定したい)
  • 総コメント数0
この記事を作った人
やり込み度

Wikiにゲームが紐づいていません

編集者紹介

未登録

注目記事
ページトップへ