ゆっくりと指定の座標に向ける Quaternion.RotateTowards
指定の座標に向けたい時はTransform.LookAtを使います。
ですがこれでは一瞬で向いてしまいます。
ゆっくりとLookAtしたい場合はQuaternion.RotateTowardsを使います。
rotationSpeedはfromからtoに回転する速度です。
stepはどれだけ進めるかです。
ちなみにどんなに進めてもtoで止まります。
これでゆっくりとfromからtoへ向かせることができます。
特定の種類(拡張子)のファイルだけを設定したい
シーンファイルをインスペクタから設定したい状況になった。
調べてみたところシーンファイルはDefaultAssetクラスでした。
DefaultAssetをシリアライズしてインスペクタから設定してみたところシーンファイルだけを設定することができなかった。
なので、拡張子で判断して.unity以外のものを弾くようにします。
AssetDatabase.GetAssetPathでAssetsフォルダからのパスが取れます。
ここで取得したパスには拡張子もついてきます。
FilterFileExtension属性の引数に拡張子の名前をドット抜きで入れてください。
ここに「unity」と入れればシーンファイルだけが設定できるようにできます。
前述したとおりシーンファイルはDefaultAssetなのですがObjectに入れています。
これはDefaultAssetだとエディターではビルドは通りますがパッケージの際にエラーが出てしまうからです。
シーンを非同期で加算ロードする LoadLevelAdditiveAsync
ゲーム開発の基礎構築
まずはシーンを管理、SceneManagerからはじめます。
要件としましては
- 非同期にロードしたい
- 複数のシーンファイルでひとつのシーンを構成したい
- Hierarchyを綺麗に管理したい
- シーンをある程度キャッシュしたい
- シーンのライフサイクル
おおまかにこんなことろでしょうか
さっそく非同期でシーンをロードする方法を
- LoadLevelAsync
- LoadLevelAdditiveAsync
この2つがありますが今回は複数のシーンファイルでひとつのシーンを構成したいためLoadLevelAddtiveAsyncを使います。
LoadLevelのかわりによんで戻り値のAsyncOperationのprogressかiDoneを監視するだけです。
ReadOnlyなSerializeFileld
Inspectorに表示したいけど編集されたくない。
というこどでReadOnlyなSerializeFiledをつくります。
実現方法は自前のAttributeを用意します。
ReadOnlyDrawer.csはEditorフォルダに置いてください。
どうやら配列のSizeはReadOnlyにならないようです。
どうにかならないかな…
あと、[SerializeField, ReadOnly]でもいいみたいです。
Attributeは省略できるようですね。
個人でゲーム開発をはじめます。
まずは基礎構築から…
その過程の記事がメインになっていくと思います。