万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

C#

Nullableから普通の値にする時 C#

C#

キャストか.Valueのどっちがベターか? stackoverflow.com .GetValueOrDefault();があった・・。

Animator.ResetTrigger

Unity - スクリプトリファレンス: Animator.ResetTrigger 全てのトリガーをリセットしたいのに、1つをピンポイントで指定。面倒。 Animatorの拡張メソッドがあるといい。 /// <summary> /// Triggger全てリセット. /// </summary> /// <param name="self">Self.</param> public static void ResetTriggers(t…

C# Linq 簡単に繰り返しのListを作る Linq

{1, 1, 1}のリスト using System.Linq; IList hogeList = null; hogeList = Enumerable.Repeat(1,3).ToList(); 1が3つ

Unity uGUIのRectTransformのpivot

http://answers.unity3d.com/questions/1007886/how-to-set-the-new-unity-ui-rect-transform-anchor.html なので左上にするなら public static void SetPivotLeftUp(this RectTransform aRectTransform) { Vector2 vec2 = Vector2.one; vec2.Set(0.0f, 1.0f…

UnityでinterfaceのList

ReorderableListを使いたいが interfaceはシリアライズにできないので http://answers.unity3d.com/questions/783456/solution-how-to-serialize-interfaces-generics-auto.html https://msdn.microsoft.com/en-us/library/system.runtime.serialization.ise…

Xamarinで実機転送遅い時

iOS 9.0, Xamarin Studio, "waiting for debugger to connect..." - Stack Overflow 実はiPhone設定

0件の配列でLinqのLast()ではエラー

int[] hoge = {}; Debug.Log(hoge.Length); hoge.Last (); InvalidOperationException: Operation is not valid due to the current state of the object System.Linq.Enumerable.Last[Int32] (IEnumerable`1 source)

Xamarin Realm C# Manageが非推奨

// Update and persist objects with a thread-safe transaction realm.Write(() => { realm.Add(new Dog { Name = "Rex", Age = 1 }); }); https://realm.io/docs/xamarin/latest/#class-subsets

C# Unity Spineの注意

UnityでSpineを扱う際に覚えておきたいTIPS - Qiita ここは記事が古い コールバックこのように設定する。 // コールバックの設定. private void SetCallback(SkeletonGraphic skeletonGraphic) { skeletonGraphic.AnimationState.Complete += OnCompleteSpin…

Unity パーティクルの色設定メモ C#

private void SetParticle(Color color) { ParticleSystem.MainModule main = this.m_particle.main; main.startColor = new ParticleSystem.MinMaxGradient(color); }

Inspector拡張でEditorのScript表示

[CustomEditor(typeof(Hoge))] public class HogeEditor : Editor { public override void OnInspectorGUI() { MonoScript script = MonoScript.FromScriptableObject(this); script = EditorGUILayout.ObjectField(script, typeof(MonoScript), false) as M…

C# Unity FindObjectOfType

コンストラクタで呼べない、 FindObjectsOfType is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. デストラクでやると? FindObjectsOfType can only be called from th…

アニメーションの最後にスキップ Unity Animator

https://forum.unity3d.com/threads/set-state-to-last-frame-of-animation-save-position-of-animation.276437/ animatorならいくらでも情報があるが、Animatorにはあまりない。 animatorがインスタンス変数 int hash = Animator.StringToHash("ステートマ…

C# Unity 「Save Project」のショートカット

AssetDatabase.SaveAssets ();の動作は「Save Project」と同じ。 なのでショートカット作成しよう。 using UnityEditor; using UnityEngine; public class MyEditorWindow : EditorWindow { [MenuItem("File/Save Project %&s")] static void SaveProject() …

UnityのuGUIでRectTransformが小数点が出た時のチェック

よく、シーンがm_LocalScale: {x: 1.0000376, y: 1.0000376, z: 1.0000376}みたいになってるかと using UnityEditor; using UnityEngine; if (GUILayout.Button ("チェック")) { List<string> nameList = new List<string> (); RectTransform[] rectTransforms = GameObject.</string></string>…

Unity C# ノードエディタ

PlayMaker的なStateMachineの図みたいなのをEditorで作りたい BahaviorMachineという無料アセット有るけどdllだった・・・ https://www.assetstore.unity3d.com/en/#!/content/20280 https://forum.unity3d.com/threads/drawing-lines-in-the-editor.71979/ …

1日でクラウドサービスをマスター! 全部できるまで帰しま10!

コレに参加 http://japan.unity3d.com/blog/press/20161121 プロジェクト入れると変なワーニング・・・ A default asset was created for 'Assets/Etc/playGROWnd/playground/Audio/Musics/NewAudioMixer 1.mixer' because the asset importer crashed on it…

自動で配置する機能を使った場合にRectTransformのHeightの取得 C# Unity

自動で配置する機能を使った場合にRectTransformのHeightは "Some values driven by ContentSizeFitter"とかメッセージが出てそれで計算されているっぽい。 しかし、試しにRectTransformの rect.y とか rect.size.y とか sizeDelta.yでは0が返却される。 グ…

SceneNameAttribute Unity C#

2Dユニティちゃんのデモゲームが参考になった https://github.com/anchan828/property-drawer-collection/blob/master/SceneName/SceneNameAttribute.cs これ使えば [SceneName] [SerializeField] private string nextLevel; とか使える。

Unity C# JsonUtility

Unity - マニュアル: JSON 形式にシリアライズ 今更ながらJsonUtility using UnityEngine; using System.Collections; public class JsonTest : MonoBehaviour { // Use this for initialization void Start () { MyClass myObject = new MyClass (); myObje…

選択オブジェクト数を表示 Unity

[MenuItem("GameObject/選択GameObject数表示", false, 1)] static void CountSelectObjects(MenuCommand menuCommand) { int count = Selection.gameObjects.Length; // これがないと二度以上実行される. if (count > 1) { if(menuCommand.context != Selec…

TimeScaleに影響されないレガシーアニメーション Unity C#

GitHub - onevcat/UnpauseMe: Script for Unity3D, unpause Unity3D animations or particles when set Time.timeScale = 0. これ。 Animatorのならプルダウンでできるが、レガシーアニメーションはできない。 UnpauseMe/AnimationPlayIgnoreTimeScale.cs at…

Unity EditorでArrayのbool, string

面倒なので拡張 public static class Extends { /// <summary> /// Gets the bool array value. /// boolの配列を取得する. /// </summary> /// <returns>The bool array value.</returns> /// <param name="myProp">My property.</param> /// <param name="key">Key.</param> public static bool[] GetBoolArrayValue(this SerializedProp…

Unityで古いXamarin Studioを使う

Xamarin Studio がアップデートを促したので、 6にアップデートされてしまい、Unityのプロジェクトが上手く開かなくなった。 Outdated cask: xamarin-studio · Issue #17941 · caskroom/homebrew-cask · GitHub xamarin.ios - From where can I download xam…

VS CodeのUnityのVSCode.cs

https://msdn.microsoft.com/ja-jp/library/hh264221.aspx #if !UNITY_EDITOR_WIN // Make sure our reference framework is 4.0, still the base for Unity if (content.IndexOf("<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>") != -1) { content = Regex.Replace(content, "<TargetFrameworkVersion>v3.5</targetframeworkversion>

NGUIのローカライズ(UILocalize.cs)でリフレッシュ

www.tcmobile.jp NGUIのローカライズ機能のUILocalizeは便利だが・・。 csv(拡張子は.txt)をいじるたびに再起動? そんな面倒なことしてられっか! UILocalizeEditor.csのOnInspectorGUIメソッドの中にこれを追加して if(GUILayout.Button(new GUIContent(…

VS Codeのメモ

command + P でインストール。 User Settingsはどこ?command + , codezine.jp 設定 VS Codeを使ったUnity開発 - Qiita

VisualStudio CodeをUnityで

https://code.visualstudio.com/Docs/runtimes/unity

納得行かないあいまい C# コンストラクタ

C#

class Hoge { public Hoge(Transform aho) { } public Hoge(bool aho, bool a=false) { } } こんなクラスでコンストラクタもある。 それに対して以下で初期化 var a = new Hoge (this,transform); 以下のエラーになる。 error CS0121: The call is ambiguous…

uFrameやってみる(Unity 5.3.1f1)

Unityは5.3.1f1を使っている。 uFrameやってみる。 Asset Storeの1.6.3.r1のバージョンを使うことにした。 uFrame-1.5.1r2とuFrame-1.6.3r1のUnityパッケージが存在する。 このバージョンがあたらしいuFrame-1.6.3r1を展開してみる。 すると早速大量のエラー…

Unityエキスパート養成読本

Unityエキスパート養成読本 Unityエキスパート養成読本[ゲーム開発の現場で役立つノウハウ満載! ] (Software Design plus)作者: 佐藤圭明,村上哲太郎,大塚壮太郎,渡部聡,渡邉俊光,新井隆祥,相良康介,吉田奉正,石黒祐輔,大庭俊介出版社/メーカー: 技術評論社…

stringでメソッド名を辞めたい UnityEditor C#

C#

メソッド名をstringで"HogeMethod"っとやるのはエラーになってくれないのでメソッド名を安易に変えられなくて不便。 void HogeMethod(bool isActive) {} という名前の時は。 var methodName = (this.HogeMethod as Action<bool>).Method.Name; のようにするのが良</bool>…

UnityEditorでのNullReferenceExceptionのハマり

string hoge; で宣言して、 this.hoge = GUILayout.TextField(this.hoge, 200); とすると、 NullReferenceException: Object reference not set to an instance of an object UnityEngine.GUI.DoTextField (Rect position, Int32 id, UnityEngine.GUIContent…

MonoBehaviorでInvokeをパラメータ付きでメソッド拡張

C#

docs.unity3d.com があるのでEditor拡張で (target as MonoBehaviour).Invoke("HogeMethod", 0f); とかやることがあると思う。 ちなみに第2引数は秒数なのでHogeMethodに渡したい引数ではない・・。 using System; using System.Reflection public static vo…

カスタムコルーチンの日本語公式記事を万年素人が理解するメモ

http://blogs.unity3d.com/jp/2015/12/01/custom-coroutines/ 1. 疑問 もしWaitForSecondsをtimescaleを0に指定しながら使用したら、(timescaleが0以外に再び戻るまで) 永遠に待ち続けることになるのです。 理由 これはつまりWaitForSeconds に1秒待つよう…

C#Unity IEnumerator

Currentとは Unity のコルーチンで結果を受け取る - Qiita StartCoroutineで呼ばれているIEnumeratorメソッド内ではCurrentを返さないとダメらしい。 こちらも参考 Unity入門/コルーチンの待機 - WisdomSoft あとは、関係ないがvoidを返す普通のメソッドでの…

C# Unity EditorのInspector拡張で自前のクラスの変換

Hogeクラスは何の変哲もないMonoBehaviorの継承でもないふつーのクラス。 シリアライズのため[System.Serializable] [System.Serializable] class Hoge { string bar; } そしてInsppectorを表示していたクラス public class MyMono : MonoBehaviour { [Seria…

InitializeOnLoadとかInitializeOnLoadMethodとかRuntimeInitializeOnLoadMethod Unity

どうしてもEditorのOnEnabledが遅くて、普通のMonoBahaviorのAwake()より遅くて困った。 [InitializeOnLoad] //これをつけるとstaticなコストラクタを定義すると呼ばれる. public class Test : Editor // 別にEditorの小クラスでなくても`InitializeOnLoad`…

yield return n C# Unity

yield キーワード yield return n; とした。 foreach(object n in GetIterator()) { Debug.Log(n); } ちゃんと数字返るっぽい

カスタムインスペクタでプライベートメソッドにアクセス

invoke a method from a Unity Inspector カスタムアトリビュートを作る? using System; // Place this file in any folder that is or is a descendant of a folder named "Scripts" namespace CatchCo { // Restrict to methods only [AttributeUsage(Att…

TransformのCustomEditor C# Unity

https://unity3d.com/learn/tutorials/modules/intermediate/live-training-archive/property-drawers-custom-inspectors UnityScriptもなんかある http://answers.unity3d.com/questions/39360/how-to-get-to-the-editor-to-display-a-childs-world.html

NGUIとかで使うカラーコード C# Unity

RGBの(255, 255, 255)みたいなのを6桁の16進数数字のカラーコードFFFFFFにしたい。 ※'#‘はいらない。 RGB値からHTMLカラーコードに変換する:humming bird を参考。 拡張メソッド // Slice. public static string Slice(this string aString, int num) { retu…