Unityゲーム開発者アイデルンのBlog

よかったら読んでいってね

ブラックフライデー開催中!!

年に一度の大特売ブラックフライデーが来ましたね。

 

世間ではイオンだのAmazonだの言われていますがゲーム開発者にとってはそれらは二の次。

 

そんなものよりもUnityAssetStoreが大幅値下げしていることのほうが重要。

 

assetstore.unity.com

 

普段はあのアセット高いからちょっとな~ってのがありますが特売期間なので手に入りやすいですね。

 

また同時にUdemyもブラックフライデー開催中。

 

www.udemy.com

 

Udemyを知らない人のために紹介しますと個人でやっている教員が出している教科書を買えるサイトと理解してくれるといいです。

 

こちらも大幅値下げなので普段お高い教材をお安く買えるチャンス。

 

書籍に売っているサンプルコードもいいですがこうしたフリーで活動している人たちがどんなコードを書いているのか手を取りやすい価格で提供されています。

 

Udemyは普段からセールをしていても目当てのものがしているとは限らないのですがブラックフライデー中はほとんどものが大幅に値下がっています。

 

ぜひともこの機会に買いだめするのもいいですね。

 

買う予定がありましたら期限までまだまだ時間はあるので焦らずに選びましょう。

 

Listの使い方

前回の配列とほぼ同じ書き方ですが配列とは違うことは後から追加したり消したりできるようになることです。

 

例えばアイテムリストみたいな出し入れするものに使います。

 

ソート機能やら関数を使えるようになるので配列みたいな決まっているものではないものに使用することをお勧めします。

 

ちなみに処理の速度は配列>Listだそうで軽さ重視なら配列、対象重くなっても多様化したいならListと使い分けましょう。

 

とはいえほとんど誤差みたいなものなので気にしなくても結構なんですけどね。

 

 

使い方

 

初期化:

List<int> numbers=new List<int>();

 

追加:

numbers.Add(1)

numbers.Add(2)

numbers.Add(3)

結果:1,2,3を配列にnumbersに追加します

 

削除:

numbers.Remove(1);

結果:上の数字から1を外して2,3が残った配列になります。

 

ソート:

numbers.Sort();

 

このメソッドを使用するとばらばらになったものを整理できるようになります。

 

長さを求める:

配列のLengthと同じ意味になりますがListだとCountを使います。

 

int myNumber=numbers.Count;

Debug.Log(myNumber);

結果:上のところから引っ張って2が表示される。

 

まとめ

私がよく使うものは追加削除長さぐらいなもので配列を理解したらすぐに使えるようになります。

 

Listはとても便利なものなので配列をマスターしたらこちらも習得をしましょう。

 

配列の使い方

配列というものはほぼすべての要素を複数定義を指定すること。

 

記述方法はとっても簡単。

 

GameObject testObj;

int numbers;

float numberFlorts;

string names;

 

という後ろにを追加するだけで簡単に複数定義することができるようになります。

 

使い方

 

例を挙げますとint numbers を取り出すなら

 

int test= numbers[0];

Debug.Log(test);

結果:0

 

という結果が返ってきます。

 

何も指定しないなら必ず0になるのでpublicなどで設定しなくとも取り出すことは可能です。

 

スクリプト上から指定をしたいのなら

 

int numbers=new int {0,1,2,3}

float numberFlorts=new float {1f,2f,3f};

string names=new string {"肉","魚"};

 

という書き方をすればスクリプト上から直接代入することができます。

 

スクリプトを他で使いたく初期設定が面倒だなというときなどで活用してみてください。

 

数字を代入する方法

numbers[0]=50;

 

とても簡単ですね。

 

の部分は要素の数なのでそもそも存在しなかった場合はエラーを吐いてしまうので注意してください。

 

他にもfor文を利用して要素を追加したり。

 

foreachを使って要素を全て拾って一括何をしたいのか様々な応用が出来ます。

 

要素の数を調べる

要素名.Length

 

例:

int[] numbers=new int {0,1,2,3}

int test=numbers.Length

Debug.Log(test);

結果:4

 

これだけで要素の数を調べられるようになります。

 

 

 

まとめ

 

配列を使うと要素がまとまり綺麗に使えるようになる。

 

条件文を組み合わせることで様々なものに応用ができるようになる。

 

よく使うので覚えておきましょう。

 

バンナム主催のインディーゲームコンテストをやるらしい

indie.bandainamcostudios.com

 

ということでバンナム主催のインディーゲームコンテストが開催するそうです。

 

受賞者へ総額最大1億円支払われるそうでゲーム開発をしている人は力試しに挑戦してみてはいかがでしょうか。

 

ただ問題なのはめっちゃ応募期間が短く一つのデモゲームを開発させることが条件だそうで。

 

人からもろに評価されるものなのでアセットストアの利用やらそれなりの資金力がないと受賞すらきびしそうですね。

 

表向きは資金がない人向けとなっているけどこれバックに支援者いなければ無理じゃね?って正直思いました。

 

とはいえこういう機会は年数回しかないのでお金に余裕があり時間も十分ある人は狙ってみてはどうでしょうか。

 

よくわからないパブリッシャーなんかと比べたらかなりましな条件ですからね。

 

なんといってもバンダムですし信用度は十分です。

 

switch文の使い方

switch文とは状態を管理するものです。

 

publicを使うとインスペクター上から編集できるようになりプルダウン型で選択できるようになります。

 

状態の管理と言うのはとても便利であり例えばアイテムをとったら格闘モードや射撃モード。

 

自分が拡大したり縮小したり多種多様な状態をわかりやすくするためのものです。

 

もちろんこういうものはif文でも管理できるのですがコードが肥大化してくると何を書いたのかわからなくなってくることがとても多くなってゆくので出来れば使用しましょう。

 

短いゲームではその恩恵はあまり実感がわきませんが後々面倒ごとが増えてしまいます。

 

ここでおすすめの使い方はenumを使用することです。

 

enumを併用することでより分かりやすく管理ができます。

 

例:

 

public TestType testType;

 

enum TestType

{

     test1,

     test2,

     test3,

}

 

void Start()

{

        switch(testType)

                  {

                       case TestType.test1:

                       // ここに処理内容を書く

                       brack;

                       case TestType.test2:

                       // ここに処理内容を書く

                       brack;

                       case TestType.test3:

                       // ここに処理内容を書く

                       brack;

                  }

 

 

}

 

こうすることで切り替えた際の処理を分けることができるようになります。

 

いろんな場面で使用することが想定されるので実際に書いて手ごたえを覚えましょう。

 

使い鳴れるとなくてはならなくなる便利な分岐式でございます。

 

UnityRoomにてゲームを公開しました

毎月恒例のUnityRoomにて投稿しました。

 

unityroom.com

 

 

今回のものは2Dアクションゲームで自動的に攻撃が繰り返されレベルアップを繰り返しスキルを得て敵を倒しまくり時間制限まで生き残るというもの。

 

レベルアップ制でのスキル獲得もよく見るシステムなのでローグライクとかでも応用できそうですね。

 

 

UnityRoom向けの作り置きゲームもあとわずか。

 

気付いている人は気づいていると思いますが月の数字で投稿しています。

 

なので次回は12月の12日となります。

 

これもゲーム作りのマンスリーミッションみたいな自分に課したクエストのようなもので最低ひと月にひとつは投稿するという縛りづくりをしていた名残です。

 

もっとも1年通してやってたものなので今後はGoogleアプリストアに投稿するんですけどね。

 

作り置きがなくなったら今後は余裕があったらUnityRoomでも投稿しようかなと思いますが今のところ未定でございます。

 

近況報告

 

現在作っているスマホ向けゲームはUIの調整とステージ作りで時間がかかっています。

 

遊びごたえや演出面やらで時間食いすぎているので目標は今月中と長めに見積もっています。

 

これでも世に出ているスマホゲームよりも早いほうかもしれませんね。

 

あくまで個人ゲーム開発なので好き勝手に工数変えられるのですが一つの区切りとなるものを設定しないとずるずると中だるみしてしまうので最初に期限を決めたほうがいいからね。

 

でなければ完成できずに世に出る間もなくお蔵入りという悲しい結末を迎えてしまいます。

 

せっかく作ったのならどこかに投稿して遊んでもらえたほうがいいからね。

 

 

 

while文の使い方

while文とは同じ処理を抜けるまで無制限に繰り返す条件分岐です。

 

無限にやってしまうので使い方を誤るとクライアント自体がフリーズを起こしてしまうので扱いには注意が必要であります。

 

しかし無制限にループを繰り返すのでわずらわしさからは解放されます。

 

では例文として以下のコードを書きます。

 

void Test()

{

     while(true)

     {

          Debug.Log("test");

     }

 

 

}

 

以上のコードをアップデート関数に放り投げるとログに再現なく表示されます。

 

なぜtrueなのかは実行している間は呼び続けるようになるのでSetActiveなどで非表示にすると実行しなくなるのでループから抜けられるということになります。

 

この部分を0<10などにすると数字が増加せずループ文から抜けられなくなり強制終了してしまうので絶対にやらないでください。

 

そういう場合は数を指定して数を増やすようにしてから抜けるように変更をしましょう。

 

int number=0;

 

void Test()

{

     number++;

     while(number<10)

{

     Debug.Log(number+"回目");

     break;

}

 

 

 

}

 

まとめ

 

while文を使うのが不安ならfor文を使いましょう。

 

for文は数を指定できるので安全に使用が出来ます。

 

コードを書くのに慣れてきたら色々使ってみて試してみましょう。