hiyorinのブログ

主にUnityに関してのメモを残していきます

エントリーポイント RuntimeInitializeOnLoadMethod

Unityでのエントリーポイント。

ゲーム起動時にRuntimeInitializeOnLoadMethodのついたメソッドが呼ばれます。

複数ある場合順番を制御することはできないようです。

ここでゲーム全体で使うSingletonなGameObjectを生成したり、ゲーム開始に一度だけしたい処理などを書くといいでしょう。

厳密にはエントリーポイントではないのですが…。

  1. Awake
  2. Start
  3. RuntimeInitializeOnLoadMethod
  4. Update

はじめに読まれたシーンのAwake、Startの後に呼ばれることに注意が必要です。

ゆっくりと指定の座標に向ける Quaternion.RotateTowards

指定の座標に向けたい時はTransform.LookAtを使います。

ですがこれでは一瞬で向いてしまいます。

ゆっくりとLookAtしたい場合はQuaternion.RotateTowardsを使います。

rotationSpeedはfromからtoに回転する速度です。

stepはどれだけ進めるかです。

ちなみにどんなに進めてもtoで止まります。 

これでゆっくりとfromからtoへ向かせることができます。

Unity5.3 bate インストール

5.3からはインストールするプラットフォームを選べるようです。

AndroidiOSを選びます。

iOSだけで2Gって…

f:id:ponkotsu-hiyorin:20151102230634p:plain

インストール終わってから気づいた…

Proライセンスが必要なんですね…

f:id:ponkotsu-hiyorin:20151103001630p:plain

特定の種類(拡張子)のファイルだけを設定したい

シーンファイルをインスペクタから設定したい状況になった。

調べてみたところシーンファイルはDefaultAssetクラスでした。

DefaultAssetをシリアライズしてインスペクタから設定してみたところシーンファイルだけを設定することができなかった。

なので、拡張子で判断して.unity以外のものを弾くようにします。

特定の種類(拡張子)のファイルだけを設定したい

AssetDatabase.GetAssetPathでAssetsフォルダからのパスが取れます。

ここで取得したパスには拡張子もついてきます。

 

FilterFileExtension属性の引数に拡張子の名前をドット抜きで入れてください。

ここに「unity」と入れればシーンファイルだけが設定できるようにできます。

 

前述したとおりシーンファイルはDefaultAssetなのですがObjectに入れています。

これはDefaultAssetだとエディターではビルドは通りますがパッケージの際にエラーが出てしまうからです。

シーンを非同期で加算ロードする LoadLevelAdditiveAsync

ゲーム開発の基礎構築

まずはシーンを管理、SceneManagerからはじめます。

 

要件としましては

  • 非同期にロードしたい
  • 複数のシーンファイルでひとつのシーンを構成したい
  • Hierarchyを綺麗に管理したい
  • シーンをある程度キャッシュしたい
  • シーンのライフサイクル

おおまかにこんなことろでしょうか

 

さっそく非同期でシーンをロードする方法を

  1. LoadLevelAsync
  2. LoadLevelAdditiveAsync

この2つがありますが今回は複数のシーンファイルでひとつのシーンを構成したいためLoadLevelAddtiveAsyncを使います。

LoadLevelAdditiveAsync

LoadLevelのかわりによんで戻り値のAsyncOperationのprogressかiDoneを監視するだけです。

ReadOnlyなSerializeFileld

Inspectorに表示したいけど編集されたくない。

というこどでReadOnlyなSerializeFiledをつくります。

実現方法は自前のAttributeを用意します。

 

ReadOnlyAttribute

 

ReadOnlyDrawer.csはEditorフォルダに置いてください。

どうやら配列のSizeはReadOnlyにならないようです。

どうにかならないかな…

あと、[SerializeField, ReadOnly]でもいいみたいです。

Attributeは省略できるようですね。

 

個人でゲーム開発をはじめます。

まずは基礎構築から…

その過程の記事がメインになっていくと思います。