お疲れ様です、poppyです。本日もこちらのブログを見に来てくださりありがとうございます。
今回は進捗報告としてUnityでゲームシステムをちょこちょこ改良しました。
昔書いたクソコードたちが襲ってくる(自業自得)
ということで、特に自分が今後頻繁に使うであろう「画像表示(第3回)」あたりを中心にコードを見直しました。
現状でも使えなくはなかったのですが、色々と機能を追加したり仕様を変更したいな、と思って下に下に書き連ねていった結果、どこにバグがあってもおかしくないクソコードの集合体が出来上がってしまいました。ちゃんと設計を決めないとこうなるというまさに典型ですね。(実質的にプログラムが)個人開発であることの弊害です。誰も指摘する人がいないから「動ければいいや」で突っ走ってしまう。
これは良くないぞ、ということで抜本的な見直しを実施しました。変数がバラバラになっているところはクラスを活用してひとまとめにしました。
/* before*/
// 画像を配置する
public void PutImage(string imageName,string spriteName, string parentObjectName, int layerOrder = 10000, int img_x = 0, int img_y = 0, int scale_percent = 100, ColorState colorState = ColorState.White, bool lockColor = true, bool visibled = true)
//→色々機能を付与した結果、大量の引数に襲われてしまった
/* after */
// ImageInfo クラスの定義
[System.Serializable]
public class ImageInfo
{
public string imageName;
public string spriteName;
public string parentObjectName;
public int layerOrder;
public int img_x;
public int img_y;
public int scale_percent;
public ColorState colorState;
public bool lockColor;
public bool visibled;
public ImageInfo(string imageName, string spriteName, string parentObjectName, int layerOrder, int img_x, int img_y, int scale_percent, ColorState colorState = ColorState.White, bool lockColor = true, bool visibled = true)
{
this.imageName = imageName;
this.spriteName = spriteName;
this.parentObjectName = parentObjectName;
this.layerOrder = layerOrder;
this.img_x = img_x;
this.img_y = img_y;
this.scale_percent = scale_percent;
this.colorState = colorState;
this.lockColor = lockColor;
this.visibled = visibled;
}
// 画像を配置する
public void PutImage(ImageInfo imageInfo)
//→クラスにまとめることでスッキリした
他にも同様にクラスなどでまとめたり、スプライトで命令を書くのにも簡単になるように工夫したりしました。
それ以外にもバグ(選択肢選択時にSKIP・AUTOモードを押すと選択肢をスルーできるバグ)を潰したり、キャラが喋っていないときはグレー状態にする仕様、なめらかな画像移動や振動の追加、キャラにアイコン(怒りマークなど)の付与など、結構色々なことをやりました。
そのせいで「ノベルゲームを作ろう」からコードの内容が離れてしまうことが多くなってしまい、どうしようかな~と頭を悩ませています。バグの温床となったあの記事たちを公開させるのは良くないかなと思いつつ、とはいえちゃんとしたものに改変させるのも面倒だし・・・ということで考え中です。
追記:すべての記事に以下の「お詫び」を追加しました。もし「ノベルゲームを作ろう!」シリーズにPVという名の需要があればさすがに考えますが、現状では改変するほどの余裕がないので諦めました。大変申し訳ありません。
あくまでも実装当時のコードを掲載しております。現在はバグなどを潰すために修正を行っているため本記事とは異なるコードになっておりますが、
こちらに反映する予定はございません。大変申し訳ありません。あくまでも参考程度に見ていただければ幸いです。
ということで、なんやかんやゲームは進んでいますが、肝心のシナリオへの当てはめは進んでおりません。どこかで時間取ってやらないとそろそろまずいかも・・・・・・。
それ以外の進捗
それ以外の進捗をここにさらっと乗せます。
音楽(DTM)
音楽理論の勉強とアウトプットとしての作曲を並行して行っています。最近はUnityにかまっていてあまりこちらのほうが進んでいません。一旦12月までに2,3曲を編曲・MIXを進めたいです。
イラスト(free)
イラストについては背景を主に勉強しているそうです。「そろそろできそう」というところで楽しみです。それが終わり次第キャラクターの差分などに取り組んでいただく予定です。
終わりに
最近出すものがなくて進んでいないかのように思えてしまいますがこれは仕方ないです。一応進んでますよ~ということで。
それではまた!