三角端。

Δ-sphere管理人三角区也による絵日記/ゲーム開発日記。コメントは右側のweb拍手からどぞー。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

急に

やっぱりRPGを作りたいよね
RPG作りたいなーとか思いつつ Unityで色々探ってます。
ツクールでいうところのデータベースっぽいものを作ることはできました。

パーティキャラクターのデータ管理です。
戦闘シーンとかを最初に作ってみよう→
HUD必要だよね→
HUDに表示するデータをどうしよう
じゃあとりあえずパーティメンバーのデータ構造から作りますか。

要求仕様として「ゲームを開始してから各メンバーの各値は保持される」というのがあります。
パーティから外れてもそのデータは生かしておかないといけません。
なのでゲーム中どこかに保存しておく必要がありますが、
Unityのゲームオブジェクトにそのデータを持たせると、シーンを作るたびにゲームオブジェクトを設置しないといけない上に、
他スクリプトからのアクセスが面倒です。

そこでスクリプトからのみアクセスできる管理用シングルトンを作りました。
ついでにシングルトンをクラス化しておきました。
public class Singleton<T> where T:Singleton<T>,new(){
	static T sInstance;

	public static T Instance{
		get {
			if(sInstance == null) {
				sInstance = new T();
			}
			return sInstance;
		}
	}
}
public class PlayerStatics :Singleton<PlayerStatics>{
    List<HeroInstance> Heros;
};
これでスクリプトのどこからでもPlayerStatics.Instanceでアクセスで切るようになりました。
あ、HeroInstanceってのはHeroDataを参照するオブジェクトです。
HeroDataはレベル曲線とかの不変データでHeroInstanceは現在の経験値とかの可変データを持っています。

そんで、肝心のパーティメンバーのデータ構造です。
ぐぐってみるとScriptableObjectが便利だということで使ってみることにします。
public class HeroData : ScriptableObject {
	[Range(0,999)]
	public int Attack = 100;

    [MenuItem("Assets/Create/CreateHeroData")]
    public static void CreateAsset()
    {
        HeroData item = ScriptableObject.CreateInstance < HeroData > ();

        //アセットを保存するパス
        string path = AssetDatabase.GenerateUniqueAssetPath("Assets/Data/Resources/Heros/" + typeof(HeroData) + ".asset");

        AssetDatabase.CreateAsset(item, path);
        AssetDatabase.SaveAssets();
		AssetDatabase.Refresh();

        EditorUtility.FocusProjectWindow();
        Selection.activeObject = item;
    }
}
おお、確かにインスペクタで簡単にメンバーデータを編集できるようになりました。
HeroDataを追加していけばどんどん主人公データを増やしていけます

・・・が、要求仕様の「ゲームを開始してから各メンバーの各値は保持される」をクリアしないといけないので作ったHeroDataはPlayerStatics のHerosに追加しないといけません

ScriptableObjectはインスペクタで中身を編集できて便利だけど、 スクリプトからのアクセスには、Resourcesに入れて文字列でないとアクセスできないようでした。
新しいHeroDataを作成するたびにそれをResources.LoadしてHerosにAddするのも面倒です。

なんかいい方法ないかな、と色々みてたらResources.LoadAllなんて便利なものがあるじゃないですか。
PlayerStaticsを初期化する場所に次のコードを書いたらうまくできました。
    HeroData[] heros = Resources.LoadAll<HeroData>();
	foreach(HeroData hero in heros) {
		Heros.Add(new HeroInstance(hero));
	}
これでHeroDataを追加したら全自動で管理クラスPlayerStaticsに追加されるようになりました。
便利便利。

新年明けましておめでとうございます。

まさかこんな正月になるとは思いませんでした。
30日から体調を崩して熱が出て吐いて、
ちょっと遠い休日診療所までがんばって行って帰って
それからずっと寝ていました。

丸一日何も食べずに急に餅のように消化の悪いものを食べるっていうね・・・


あ、とてもお久しぶりでございます。
生きてます。


今年の年賀状はこんなのでした。

d_illust_406.jpg

本年もよろしくお願いいたします。

ハロウィン

すごく久しぶりに絵を描いた気がします。

d_illust_405.jpg

ハロウィンっていつから日本で市民権を得たのでしょう

もともとはヨーロッパでの豊穣祭か何かでキリスト教とは別物だそうです。
日本では神輿を担いで町内を回ったりする祭が、豊穣祭、収穫祭が起源となっているところも多いのではないのでしょうか。
そうすると神輿を担ぐ祭、イコール、ハロウィンという図式が成り立って、
みんなかぼちゃを被って魔女のコスプレをして神輿を担ぐわけですね!(暴論)


もっとも現代のハロウィンは本来の意味からかけ離れているわけですが。

シンゴジラ

シンゴジラ見ました。

結構前の話ですけど。

ネットとかで評判を見ていたりすると
色々な感想とかありまして、それらは2極化しているように見えます。
まあそれは個人個人の感想なので全員が面白い物は無理なんですが。


自分もそうだったんですが、役者が嫌だったというコメントがあって、
その役はその人じゃなくていいじゃないかとかなんとかかんとか。
それに対してそれは監督が意図してしていることで監督の意図が汲み取れていないとかそんな意見もありました。

で、そんな感想を読んでいくうちに
単純に監督とかどうでもよくて、映画の世界を楽しんでいる人の感想と
監督が表現したい主題とかそういったものを類推して楽しんでいる人の感想
そういったふうに分かれていることに気がついて、なるほどなーと。

自分は世界を楽しむのが好きなのかもしれません


そんでシンゴジラは映画見た後に考察を色々見てもう一度見るのが楽しい映画のような気がします。
・・・まだやってる?

うにてぃ

ずいぶんと間が空いてしまいましたね。

最近はUnityで作っていたんですが、
3D素材を作ったりするのが初めてなもので素材作りに試行錯誤で進めてます。

本当はフリゲ展とかに出そうかなーなんて思って始めたこの企画。
一向に完成する気配が無いので少しずつ進めることにします。


とりあえずこんな感じで家の中を歩けるようになっているだけです。
screen_264.jpg

ようやくBlenderの使い方とかUnityがなんたるかとかが分かってきた感じです。

早くゲームギミックとかをメインで作りたいですねー
そのためにはモデリングでおきものをいっぱい作らないといけないんですね・・・
これがなかなか進まない原因でもあるので、
誰かやってくれないかなー・・・なんて都合のいいことばかり思っていたりしますw

前のページ 次のページ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。