hiyorinのブログ

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

Unity

StateMachineBehaviourについて

StateMacineBehaviourとはUnity5から追加されたAnimatorのステート状態に合わせてコールバックを返してくれるものになります。 AnimatorControllerに貼り付けて使うものになります。 OnStateEnterがステートに入った時、OnStateExitがステートから出る時。 S…

Unityちゃん、揺れもの、Reflectionについて

Unityで揺れものを実現させたい場合Unityちゃんの SpringManager,SpringBone,SpringColliderを使うと簡単に実装できます。 ですが、パフォーマンス確認中に若干ボトルネックになっているところがあった。 Unityのプロファイラーで確認してみるとSpringManage…

uGUIが表示されなくなる dll reimport

"Asset '*********/UnityEngine.UI.dll' is in timestamps but is not known in assetdatabase..." Unityが固まったので強制終了させたらこんなエラーが。 よく見るとuGUIの部分が表示されていない。 解決するにはこのDLLを再インポートする。 Unity終了、DL…

エディタ拡張でprivate fieldにアクセスする

エディタ拡張をする際、いつもプライベートのフィールドやプロパティを変更したい場合に困ってしまう。 インナークラスからはプライベートのフィールドやプロパティにアクセス出来ることを利用して解決してみる。 拡張したいクラス内にUNITY_EDITORでくくっ…

オブジェクトの周りを回転させる Transform.RotateAround

指定したオブジェクトの周りを回転させたい時はTransform.RotateAroundを使います。 axisは回転軸になります。 このサンプルの場合はY軸を指定して反時計回りに回ります。 Vector3.downを指定すると反時計回りになります。 これをカメラにAddComponentすれば…

プレハブを削除したとこでMissingになってしまったインスタンスの解決

プレハブを削除するとHierarchy上で赤く表示され、InspectorにMissingと表示されてしまいます。 これを解決するにはインスタンスを選択しておき、GameObject/Break Prefab Instance これでプレハブとの参照がきれます。

エントリーポイント RuntimeInitializeOnLoadMethod

Unityでのエントリーポイント。 ゲーム起動時にRuntimeInitializeOnLoadMethodのついたメソッドが呼ばれます。 複数ある場合順番を制御することはできないようです。 ここでゲーム全体で使うSingletonなGameObjectを生成したり、ゲーム開始に一度だけしたい…

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

指定の座標に向けたい時はTransform.LookAtを使います。 ですがこれでは一瞬で向いてしまいます。 ゆっくりとLookAtしたい場合はQuaternion.RotateTowardsを使います。 rotationSpeedはfromからtoに回転する速度です。 stepはどれだけ進めるかです。 ちなみ…

座標間の角度 Quaternion.LookRotation

座標Aから座標Bへの角度を求めたいときはQuaternion.LookRotationを使う。 座標間の角度 この場合、第一引数に(座標B - 座標A)を与えます。

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

シーンファイルをインスペクタから設定したい状況になった。 調べてみたところシーンファイルはDefaultAssetクラスでした。 DefaultAssetをシリアライズしてインスペクタから設定してみたところシーンファイルだけを設定することができなかった。 なので、拡…

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

ゲーム開発の基礎構築 まずはシーンを管理、SceneManagerからはじめます。 要件としましては 非同期にロードしたい 複数のシーンファイルでひとつのシーンを構成したい Hierarchyを綺麗に管理したい シーンをある程度キャッシュしたい シーンのライフサイク…

ReadOnlyなSerializeFileld

Inspectorに表示したいけど編集されたくない。 というこどでReadOnlyなSerializeFiledをつくります。 実現方法は自前のAttributeを用意します。 ReadOnlyAttribute ReadOnlyDrawer.csはEditorフォルダに置いてください。 どうやら配列のSizeはReadOnlyになら…