入社日でした

今日、入社日でした。

Android,iOSの広告を引き継ぎます。

復習メモ
terminalでAndroid端末確認 adb devices
apkを端末インストール adb install -r ~/Desktop/Q_android.apk

AndroidJavaClass リフレクションを使いUnityでJavaクラスを使えるようにしている
AndroidJavaObject クラスの中のメンバ変数を参照させる、インスタンス

Implement Strategy Pattern to Character Class

HeadFirstの本を読んでStrategy Patternを覚えました。


O'Reilly Japan - Head Firstデザインパターン

O’Reilly Japan – Head Firstデザインパターンhttps://www.oreilly.co.jp/books/4873112494/初めて学ぶ方、過去に挫折した経験のある方、知識を確固たるものにしたい方を対象に、イラストや写真を使ってやさしく楽しく解説する人気のHead Firstシリーズのデザインパターン編。刺激的なレイアウト、思わず膝を叩く見事なたとえ、引き込まれる小話、楽しいクイズやパズルで飽きることなく読み進むことができます。複雑難解なデザインパターンの概念が面白いほどよくわか…

 

色んなひよこを作るとき副作用無しで動きを柔軟に変更できるのが良いです。
メモ

  1. 実装に対するプログラミングより、インターフェース/スーパータイプに対するプログラミングをするべき。
  2. サブクラスに動きの挙動を加えると隠蔽されて再利用できなくなる。

 

  • 自分のプロジェクトで使ってみた。
    スーパークラスにinterface型IFlyBehaviorを足す
    flyBehaviorのプロパティだとUnityが落ちるのでSetPerformFlyメソッドで実装

下は動かなかった

 
 
interfaceとinterfaceを継承したクラスを作成
.csは三つ作成
Screen Shot 2015-05-04 at 19.28.26

 
IFlyBehavior.cs

 
FlyNoWay.cs

 
FlyWithWings.cs

 
 
実装に対するプログラミング
とりあえず爆弾ひよこを作ってみる
3Dモデルと飛ぶ振る舞いの細かい中身は後にしてログだけ出す。
動的に飛ぶ振る舞いを変えれるようにAwake,Startで変更

 
UnityEditorで確認
FlyWithWings,FlyNoWayが呼ばれました^^
もし爆発振る舞いが欲しければChickManagerに追加すればよい、その時他のサブクラスには影響は無いですね。
Console

データの保存、復元を作り直しました。

前回作ったひよこ情報保存ですが仕組みが悪いので作り直しました。

UnityActionについて | ゲームでヒットさせてハワイに住むまでhttp://rainbow23.jp/?p=25今までUnityActionの使い方がわかりませんでしたがいい記事を見つけたのである程度わかるようになりました。

 

各ひよこにあるChickManagerオブジェクトがCreateCharManagerクラスにあるリストに自分の情報を追加としてましたがリストがpublicなので情報が他のオブジェクトに漏れて危なかったです。

今回はDataEventクラスを作り保存、復元を全て任せました。
命令はGameControllerクラスから受けてます。

 
 
GameControllerクラス 関係ない箇所は削除して記載
簡素にSave,Loadメソッド名にしました。

 

DataEventクラス

の階層下にひよこを全部作っている。
復元するときも同じ場所にしないといけない。

 

ひよこを作る仕組みはPoolに変更しました。
新しいひよこが作られるたびPoolコンポーネントが増えます。
掃除実行は初期設定のままで問題無いですね。
GetInstanceメソッドで元の記述がreturn nullでエラーが出ていたので修正しました。

新・オブジェクトプール - テラシュールブログ

新・オブジェクトプール – テラシュールブログhttp://tsubakit1.hateblo.jp/entry/20140309/1394296581オブジェクトプールを新しく自作した。前に作ったオブジェクトプール [Unity3D]オブジェクトプール作ってみたオブジェクトプールとはオブジェクトの生成・破棄を回避するギミック。基本的にオブジェクトやインスタンスの生成・破棄はパフォーマンスに影響を与える候補の中で上位にあり、特にマネージドコード上で動作するUnityはこの影響が顕著に出る。 使わなくなったら破棄するのではなく、キャッシュしておき使用するタイミングで初期化・再配置するオブジェクトプールがパフォーマンスの改善に役立つことがある。 使い方 Pool.csをプロジェクトの適当なフォルダに配置後、下のコードのようなコードを記述。// p…

ビットマップ数字表示を再実装

BitMapNumを表示させるのに整理した。
1が含まれると右にずらさないといけないので面倒ですね。
各数字の親にはBitMapNumberManagerクラスを貼り付け

Screen Shot 2015-04-15 at 02.05.04

 

その下階層にはNumSettingsクラスを貼る

Screen Shot 2015-04-15 at 02.05.23

 

カゴに入った時のスコアは背景に卵があるのでEgg1も表示、非表示に対応できるようにNumSettingsクラスを新たに作りました。
BitMapNumberManagerの命令で『もし各UISpriteが子供を持っていたら表示、非表示」をすると分かりにくいと思って。

Screen Shot 2015-04-15 at 02.12.17

 
UpdateNumberメソッドに好きな数字を渡せば数字を表示する
each.Show(true)だけで下の階層が有る無し関わらず実行できる

 
各数字に貼るスクリプト
下の階層が有る無しを判断させてから処理

 
これ見てから機能の細分化せないかんなと思ったのでNumSettingsクラスを作った。
Managerクラスは単純な命令にして各オブジェクトで個性を判断させればいい感じになりそうだな。

オブジェクト指向できていますか?

オブジェクト指向できていますか?http://www.slideshare.net/MoriharuOhzu/ss-14083300オブジェクト指向できていますか? 真のオ&#x30D…

6000円/月で始める3Dモバイルゲームの作り方

MayaLTとUnityでゲームを作るムービー。

Mayaで作っているところを見ていると久しぶりに作りたくなりましたね。
Jointのtransform rotation 初期化は勉強になった。
UnityのMechanimが出来るとかっこいいな、今まで触ってなかったけど雰囲気は掴めた。

6000円/月で始める3Dモバイルゲームの作り方・改 ~Unityのエバンジェリスト伊藤氏をゲストに迎え、より深い内容へ進化~ | Autodesk :: AREA JAPAN | ムービー

6000円/月で始める3Dモバイルゲームの作り方・改 ~Unityのエバンジェリスト伊藤氏をゲストに迎え、より深い内容へ進化~ | Autodesk :: AREA JAPAN | ムービーhttp://area.autodesk.jp/movie/3dmobilegame/01.html本セッションでは、Autodesk Maya LT(モバイルゲーム開発用の3Dソフトウェア、4000円/月・新価格)、Autodesk Mudbox(3Dペイントツール、1000円/月・キャンペーン価格)、Adobe Photoshop(1…

 

他メモ。
今日は今まで悩んでいたMacOSX YosemiteでのWifi不接続問題を下の記事で直して見た。
今のところ急に切れることがなく快適!

Fix Wi-Fi Problems in OS X Yosemite

Fix Wi-Fi Problems in OS X Yosemitehttp://osxdaily.com/2014/10/25/fix-wi-fi-problems-os-x-yosemite/Some Mac users who upgraded to OS X Yosemite have discovered a variety of wireless network connectivity issues, ranging from dropping wi-fi connections, to an inability to…

 
Facebookのウェブリンク貼ると自動で画像と見出し取ってくるの便利だなーと思っていてWordPressでないか調べたらありました!
今日からこれ使うぞ〜

WP Lynx – a WordPress plugin that provides FB style links » Up Past Midnight

WP Lynx – a WordPress plugin that provides FB style links » Up Past Midnighthttp://techblog.kjodle.net/2011/11/06/wp-lynx-plugin-for-wordpress-that-provides-fb-style-links/I no longer use this plugin, so what you see down below is what is left after you disable it. However, the plugin is still supported (it was last updated in 2013), so I’ll…

ひよこゲーム製作中

画像

今日はひよこゲームの続きを作っていた。

プログラムはコレクション実装、初めてゲット、2回目以降ゲットを分ける。

 

ひよこprefab作り直し

Mayaでひよこを奥に倒して顔がよく見えるように改善。

UnityではCapsuleCollider,BoxColliderを配置

Chick

 

 

AssetStoreの TexturePackerProでUV空間を編集します。

これがないとMayaでAtlasTexture用にUV編集するので膨大な作業になります(@_@)

Mayaでは下のようにUV空間0~1のままでFBX Export

Screen Shot 2015-04-04 at 23.53.15

 

TexturePackerでの編集画面
バラの画像を2048pxの画像にまとめる

Screen Shot 2015-04-04 at 23.53.52

テキストデータに_dataを加えるとTexturePackerProが認識してくれる。

これでアトラステクスチャーの各ヒヨコ絵にUVを合わせてくれる

Screen Shot 2015-04-04 at 23.58.57

 

 

文だとわかりにくいのでGIFにしてみた。

2015-04-20 21_20_54

 

Percentage実装

 

今日気づきました。
UnityEventはpublicじゃないとnull referenceになってしまいますね。
なんでだろ、publicにして[System.NonSerialized]も使えない。
Inspectorからの操作を誤操作を無くしたくprivateにしたいのですが…

[HideInspector]でいけました!

スコアに応じてパーセント表示を更新するコードを書きました。
ちょっと読みにくくなっているので綺麗に整形できればいいのですが..
UnityEventに慣れる為labelクラスのメソッドはUnityEventに登録させて呼びました。
今回はシーンに一つだけのクラスなので直にメソッドを読んでもよかったかもしれません。

UpdateLevelPercentageメソッドのUpdatePercentage.Invoke();でLabelManagerクラスのメソッドを呼びNGUI UISpriteの表示を変えています。

Project

void OnApplicationPauseにハマった…

UnityEditorですと再生ボタンを押す時OnApplicationPauseが呼ばれるんですね。
これが原因でAwakeとOnApplicationPauseでLoadElapseDataが2回呼ばれてしまい、変数が初期化されてしまいました。
1日ハマった…

なので#if UNITY_EDITORではLoadElapseData()を呼ばないように使い分けしました。

原因がわからない場合はとりあえずメソッドの中にログを書いとくと解決の糸口になりますね、勉強になりました。
全体

UnityActionについて

uGUIのイベントコールバック登録をコードから行う方法とUnityActionデリゲート群

今までUnityActionの使い方がわかりませんでしたがいい記事を見つけたのである程度わかるようになりました。

今まではdelegateとeventで命令していましたがゲームを終えた時、ひよこより先にCharCreateManagerが消えるのでメソッドの解除時nullになっていました。

UnityEngine.Events.UnityEventはRemoveAllListenersで安全にメソッドの解除ができたのでよかったです。

リストを作ってシーンの全てのひよこ情報を追加する
discに保存するコードは省いてます。

シーンの全てのひよこに命令
CreateCharManagerはゲームシーンに一つ

各ひよこは位置、回転、種類、コライダーのOnOFFをcreateCharManagerのリストに追加

projectはここにあります。
GitHub project