##はじめに
今週勉強したことをまとめています。
初めまして、HITOMI(男)です。現在Unityを勉強しています。今週勉強したこと、悩んだことをここに書き残します。
先週悩んでいた、UIのアニメーションをうまく実装することができました。うまくいかなかった原因は私の操作ミスだと考えています。できるだけこういったミスを少なくしていきたいなと考えています。
さて、私はUnityの勉強のため3D横スクロールゲームを開発しています。そこで今週悩んだことや、詰まったとこをここに書き残そうと思います。
今週(3月8〜3/14日)詰まったところ。
・読み込みクラスの単純なバグの解決に1日以上ほどかかった。
・GUIのアニメーション遷移でのバグ。
・イベント読み込みクラスについて
##単純なバグの解決に1日以上かかった。
データ読み込みクラス(前回紹介したの部分)でうまく読み込めないバグが発生しました。結論から言うとバグは解決したのだが、バグの場所の特的と修正に1日以上時間かかってしまった。そのバグの原因はfor文の Length-1の −1をつけ忘れていたと言う単純なミスでした。こんな単純なミスで時間を取られた時は、「うわーーーーーー」ってなります。今後こんな単純なミスはできるだけ無くしていきたいと思います。何か対策を取らなくては。
//ここが抜けていた。
for(var i; I<m_List.Count -1; i++)
{
}
##GUIのアニメーション遷移でバグが発生した。
漫画などによく使われている、吹き出しのアニメーションをプログラムで実装しています。内容は吹き出しがフェードインしたとに、テキストが一定間隔で表示され、テキストが終了するとフェードアウトする。といったものです。今回発生したバグは2周目のフェードインの時にフェードインが終わった際に吹き出しが消えるといったものだ。Unity上で再生を一時中断してCanvasを確認したところ、ImageのRectTransformのscaleが0,0,0になっていた。アニメーション部分がうまく動いていることを考えると、コルーチンとsetActiveの部分に問題がある思っている。実際setActiveを常にtrueにすると問題なく動く。色々悩んだ末、画面から非表示にする処理をsetActiveを使わずにscale0を用いることにした。こうするとうまく動くことができた。この部分はまた、全体が完成してからもりもり作り込んでいこうと考えている。
##イベント読み込みクラスに改良
外部のテキストから以下のようなファイルを読み込み
イベント等を実装するクラスを作っています。
(ゲームプログラマになる前に覚えておきたい技術参考)
<EventData name=“event01”,type = “count”,trigger=“”,nextEvent=“event02”>
<CountDown position = "hairScreen,hairScreen,0.0f">
</EventData>
<EventData name=“event02”,type = “speak”,trigger=“”,nextEvent=“event03”>
<TriggerObject type = “box” , event=“event”, position = "12.4,7.0,0.0”, size="1.0,1.0,1.0"></TriggerBox>
//行動制限
<SpeechBubble position="12.4,7.0,0.0">
<Speech speech="左右の矢印を押すと移動できるよ” , type=“timer”></Speak>
<Speech speech="上ボタンを押すとジャンプできるよ” , type=“wait”></Speak>
<Speech speech="下ボタンを押しても何もないよ。” , type=“wait”></Speak>
</SpeechBubble>
</Event>
<EventData name=“event03”,type = “clear”,trigger=“”,nextEvent=“none”>
略
</Event>
前回考えていたテキストの内容をプログラムに反映しました。その結果、カウントダウンからスタートクリアまで外部テキストで調節できるようになりました。と言っても、実際はカウントダウンとクリアは一枚絵を貼り付けただけで実際にアニメーションまでは実装できていません。来週はこれにカメラの制御とプレイヤーの動きを制御できるよう機能を追加したいと考えています。
##さいごに
今週は思っていたよりも進捗が遅れています。多分3月中の完成はちょっと難しいのかなと考えています。来週はスタートからクリアまで一通り遊べるようにすることと、メモリリークをなくすところまで進めたいと考えています。