MonoBehaviourのUpdateメソッド
MonoBehaviourクラスのオーバーライドメソッドの中にUpdate関連のメソッドが複数ありそれぞれの違いを調べてのでまとめておく。
MonoBehaviourクラスに用意されているUpdate関数は下の3つがある。
Update
毎フレーム呼び出されるメソッド
LateUpdate
Updateメソッド同様に毎フレーム呼び出されるメソッド
Updateメソッドよりも後に実行されるためカメラの追従のように特定の処理の後に実行して欲しい場合に使うとよいかも。
FixedUpdate
一定間隔で呼び出されるメソッド
Updateメソッドは処理の重さによってコールされる間隔が変化するため物理演算などの正確な値を取得したい場合に利用する。
以上!!(内容はほぼリファレンスのコピーやん)
それぞれのUpdateメソッドは通常のコールタイミングが違う以外の差としてTime.timeScaleを0にして時間経過を停止してやった場合FixedUpdateが呼ばれなくなったがUpdateとLateUpdateメソッドは呼ばれた。
Unityでdot by dotの表示をする方法
Unityで2D機能がサポートされたのでいろいろと触ってみたけど
2Dスプライトをdot by dotで表示をする場合適切に設定をしてやらないとダメなので備忘録として書き記す。
まずゲームの2D描画用のカメラの設定を「Projection」から「Orthographic」に変更。
変更するとカメラのinspectorに「Size」という設定項目が表示される。
Cubeなどのプリミティブ型をScaleで設定した値そのままのピクセル数で画面上に表示をしたい場合は
「画面の高さ ÷ 2」で算出された値をサイズに設定してやればよい。
void Awake () { camera.orthographicSize = Screen.height / 2; }
スクリプトでやる場合Awakeで「画面の高さ ÷ 2」の値をsizeに設定してやればOK。
※このスクリプトの役割がこれだけなので削除してやったほうがいいかもしれないが。。。。
プリミティブ型を「1スケール値=1ピクセル」で表示する場合はこれでよいのだが2DSpriteの場合は 「Pixels To Units」という
指定ピクセル数を1Unityメートルで扱うようにする設定項目があるのでこいつを弄ってやる必要がある。
カメラのサイズを「画面の高さ ÷ 2」にした場合は「1スケール値=1ピクセル」として扱うようになるので
Spriteの「Pixels To Units」設定を同様に扱うように「1」の値を当てはめてやればいい。
例 iPhone4サイズでやる場合 縦960なので カメラサイズ:480 Pixels To Units:1
この設定の場合は1スケール値とピクセル数をイコールにする場合の設定なのでNGUIなどと一緒に利用する場合
UI部分とゲーム画面でScene上の見え方が違ってしまう。
同一にしたい場合はSizeを1に設定してやる必要があるので「Pixels To Units」をカメラサイズ1に対しての値に設定をしてやる必要がある
480:1 = 1:x x=480
となるので「Pixels To Units」を480に設定してやればdot by dotで表示することができる。
Clojureの環境構築
何を思ったのか突然Clojureをやろうと思って環境の構築だけしたので忘れないために残しておく。
Clojureのインストールに関して調べてみるとLeiningen(ライニンゲンと読むらしい)を利用してやるほうがおすすめらしい。
自分はmacを使用しているのでhomebrewを利用してとりあえずインストール
brew install leiningen
インストールが完了したら準備完了
ターミナルでプロジェクトを生成したいディレクトリまで移動して
lein new プロジェクト名
↑のコマンドの処理が完了するとプロジェクト名に指定した名前と同名のフォルダが出来ているのでその下の階層に移動してfindコマンドを利用して直下のファイルを見てみる。
% find . . ./.DS_Store ./.gitignore ./doc ./doc/intro.md ./LICENSE ./project.clj ./README.md ./resources ./src ./src/.DS_Store ./src/my_stuff ./src/my_stuff/core.clj ./test ./test/my_stuff ./test/my_stuff/core_test.clj
こんな感じにファイルが出来てれば問題なし
問題なければrepleを起動
% lein repl nREPL server started on port 60715 on host 127.0.0.1 REPL-y 0.3.0 Clojure 1.5.1 Docs: (doc function-name-here) (find-doc "part-of-name-here") Source: (source function-name-here) Javadoc: (javadoc java-object-or-class-here) Exit: Control+D or (exit) or (quit) Results: Stored in vars *1, *2, *3, an exception in *e user=>
「user=>」の表示が確認できたらClojureのコードを実際打ってみて動けばOK
IDEで進める場合Eclipseのプラグインを入れればプロジェクト作成やコード補完もしてくれるらしい
eclipseにインストールする場合
http://updatesite.counterclockwise.googlecode.com/hg/
ここからインストール
ただ、ADTを利用してインストール使用したら失敗して普通のeclipseだと成功した。原因はわからんがADT側でなんかあるのかもしれん
pythonでのオプションパース
仕事の関係で簡単なツールをpythonで作ったりします。
オプション周りが面倒だと思い、今まで固定順番での指定をしていたのですが、オプションの簡単な対応方法を見つけました。
getoptモジュールを利用する
pythonのモジュールでgetoptというものがありこれがうまい具合にオプションの解析をしてくれる。
import sys import getopt if __name__ == '__main__': if len( sys.argv ) == 1: sys.exit() try: argv = sys.argv[1:] shortName = "v:h:d:" # -ショート名の指定 -v など[オプション名:]で1セット longName = ["version", "help", "directory="] # オプション名の後ろに=を付けることで値を受け取れる opts, args = getopt.getopt( argv, shortName, longName ) except getopt.GetoptError: print( "エラー" ) sys.exit() print( opts ) # オプション内容 print( args ) # オプションとして指定されていない引数 for o, a in opts: if o in ("-h", "--help" ): print( "ヘルプ" ) if o in ( "-v", "--version" ): print( "バージョン番号" ) if o in ("-d", "--directory" ): print( "-d param" + a )
こうすればオプションの判定などいろいろと一気に楽になりました。
C言語とかにもあるらしいが全然知らなかったです。。。
ただ、作るツールがデータ読み込んでファイル吐き出すだけとかそんな簡単なものなので使うかどうかがわからないという
勉強会に行ってきました。
前々から興味のあったcocos2d-xの勉強会に行ってきました。
メリット・デメリットの部分に関しては想像していた様な内容で自分の考えは間違ってはいないだなと少しホッとした。
けど話し聞いてて思ったのはどっかの記事でゲームエンジンと紹介されていたけどスライドには「2Dフレームワーク」との記載。
自分としてもエンジンとは捉えていないで2Dライブラリ的なものだと思っていたからいいんだけど、そうするとエンジンって紹介されてたのはなんなんだろうかと少し疑問に思ってしまった。
最近になって勉強会とか行くようになったんですけどやはり経験者の話ってためになるなあと実感。
中の人だけが知ってる情報とかたくさん聞けるので自分の知らない情報がたくさん入ってきて将来的にきっと役にたってくれるはず。。。
話し聞いてても面白そうだったで早速明日あるcocos2d-xの初心者向けのハンズオンに予約をしてみた。
明日も更新できるといいな。
(懇親会も少し参加してみたけど人見知りする俺にはきつい場所だった。
もっと気軽に構えていい場所だと思うけど自分から動けないこのチキンorz)
ブログ開設
祝・初記事
といっても特別書く内容はなかったりする。。。。
ブログ開設したのをきっかけに自分の勉強内容とかとまとめるようにしよう!!
(三日坊主にならないように気をつけないと)