hiyorinのブログ

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

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

"Asset '*********/UnityEngine.UI.dll' is in timestamps but is not known in assetdatabase..."

Unityが固まったので強制終了させたらこんなエラーが。

よく見るとuGUIの部分が表示されていない。

解決するにはこのDLLを再インポートする。

Unity終了、DLLをどこかに退避、Unity起動、Unity終了、DLLを戻す、Unity起動、これで再インポートできた。

とてもめんどくさいのでEditor拡張でなんとかする。

forum.unity3d.com

 

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

エディタ拡張をする際、いつもプライベートのフィールドやプロパティを変更したい場合に困ってしまう。

インナークラスからはプライベートのフィールドやプロパティにアクセス出来ることを利用して解決してみる。

拡張したいクラス内にUNITY_EDITORでくくったEditorのベースクラスを作っておく。

この中からはプライベートにアクセス出来るのです。

これを継承して拡張すればプレイベートのフィールドやプロパティにアクセスできます。

Xamarin Studio ショートカット

よく使うXamarinのショートカット

 

コマンド説明
⌘ + d 定義元へ移動する
⌘ + . 検索する
⌘ + W タブを閉じる
⌘ + Shift + W タブをすべて閉じる
Ctrl + ⌘ + ← 直前のコードへ戻る
Ctrl + ⌘ + → 直後のコードへ戻る
Shift + ⌘ + d ファイルに移動する
Shift + ⌘ + r 参照元を検索する
⌥ + ⌘ + ↑ 参照元の検索結果を前へ
⌥ + ⌘ + ↓ 参照元の検索結果を次へ
⌥ + ⌘ + ¥ ブレークポイント
⌘ + U ステップを外に進める
⌘ + I ステップを中に進める
⌘ + O ステップを次に進める

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

指定したオブジェクトの周りを回転させたい時はTransform.RotateAroundを使います。

axisは回転軸になります。

このサンプルの場合はY軸を指定して反時計回りに回ります。

Vector3.downを指定すると反時計回りになります。

これをカメラにAddComponentすればターゲットの方を見ながら周りを回転させることができます。

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

プレハブを削除するとHierarchy上で赤く表示され、InspectorにMissingと表示されてしまいます。

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

これを解決するにはインスタンスを選択しておき、GameObject/Break Prefab Instance

これでプレハブとの参照がきれます。

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

LINQでループカウンタをとる

LINQの戻り値はイテレーターなのでリストの何番目なのかを取ることができない。

 

Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, Int32, TResult>)

これを使用するとInt32にインデックスがはいる。

ソースとインデックスを匿名型にいれればループ内で使えます。