Tag: csharp
voidを使えば、アロー関数 で{}が省ける。
こんにちはー。
今、void を使えばアロー関数で{}がいらないんじゃないか説が、ふと頭のなかを通り過ぎて行きましたので紹介いたしますー。
「void 演算子で、アロー関数の {} がいらない気がする」ということです。
普通に {} はずせばいいのでは?まず、通常のアロー関数の{}なしの使い方です。普通の関数がどんどん短くなっていく過程をご覧ください。1234567891011// function 式var a = function (a) { return a + 2; };// アロー関数にそのまましてみたvar a = (a) => { return
…
Read More
UnityのSceneManagerで、シーンが存在するか確認する
Unity 5.3 から追加された、Multi Scene Editingで、シーンを追加する時、同じシーンを何個も追加したくない!ってこと、ありますよね。
「SceneManager.Contains()」的なメソッドがあれば最高なのですが、アクティブなシーンしか取れなかったりとかするんですよねー(GetActiveScene 関数)。
そこで、次のようにしました。しかし、Unity 5.3.1 くらいではOKだったのですが、5.3.2にしたら非推奨になっちゃってw・・
1234567891011using UnityEngine.SceneManagement;using System.L
…
Read More
【感動】UnityでC# 6.0 が使えた!!
追記:朗報Unity 2017 からは、デフォルトで C# 6.0 および .NET 4.6 が使用可能なようです!
この記事では Unity 5 での場合を紹介しています。
こんにちはー!!
Unityでも、最新の C# 6.0 を使って、async、await とかカッコよくコードを書きたいんだ ლ(´ڡ`ლ)
そんなことできないかなーと思って、調べてみました。
そしたら、なんと、ありました!!ので紹介します。
1. リポジトリをダウンロードC# 6.0関係のいろいろが入ったリポジトリをBitbucketからダウンロードします。
https://bitbucket.org/alexzzzz
…
Read More
UnityのLoadSceneAsyncでの非同期処理
こんにちはー!!
Unity 5.3 から、Multi Scene Editing が追加されましたね。
そこで、シーンを読み込んでから、GameObject.Find をする、次のようなコードを動かしたのですが、うまくいきません。
TestGameObject は、追加するシーン Scene2 に入っているものとします。
12345void LoadScene2(){ SceneManager.LoadScene("Scene2", LoadSceneMode.Additive); Debug.Log(GameObject.Find("TestGameObject"))
…
Read More
UnityでResourcesにあるTextFileを読む
System.IOでFileStream作って・・とかやって、互換性とか難しいのかな・・と思ったら、楽勝でした。TextAssetを使います。
12345void LoadText() { string textfile = "helloworld"; TextAsset tAsset = Resources.Load<TextAsset>(textfile); Debug.Log(tAsset.text);}
TextAssetのtextプロパティで取得できます。
…
Read More
Unityで、コンポーネント内のフィールドを文字列から動的に変更する
こんにちはー!!
Json からUnity2dのステージのデータを取ろうとしています。その時、コンポーネントの値を変えたいと思い、この方法をやりました。Reflectionを使ったりして、結構複雑でした。
ReflectionTest コンポーネントの内容は次のようにします。
これを、GameObject1 にアタッチすればできます。
安全性は・・しかし、コンポーネント内すべてのフィールドにアクセスできるのはちょっとセキュリティが・・・なので、特定の属性(ここではPermitReflection)がついたフィールドのみにアクセスできるようにします。
Reflectionに使ったしたコー
…
Read More
【Unity】C# + SceneManagerでのMulti Scene Editing
読み込み1using UnityEngine.SceneManagement;
参考:
複数のシーンを読み込んでいる状態で・・1つのシーンをアンロードする1SceneManager.UnloadScene("シーン名");
シーン名は、Build SettingsのIDでもオーバーロードされる。ただし、読み込まれているシーン名、シーンIDに限る(あたりまえだけど・・)
1つのシーンをロードするここでハマった。
1SceneManager.LoadScene("シーン名", LoadSceneMode.Additive);
LoadSceneMode.Additiveを忘れない!
全部のシーンを
…
Read More
Input.GetKeyDownとFixedUpdateは一緒にしないほうがいいっぽい
Unityで2Dのスクロールゲームを作っています。スペースキーを押したとき、Jumpするように、次のようなコードを書きました。
1234567void FixedUpdate(){ if (Input.GetButtonDown("Jump")) { // 処理 }}
しかし、ジャンプするときと、しないときがあり、
Linecastの問題かと思ってググっていたところ、
を見つけました。
サイトによると、FixedUpdateではInput.GetKeyDownはしないほうがいいらしいです。
理由は、FixedUpdate
…
Read More
【Unity】Script上でのnew GameObject()の使い方
(Unity5.3.1で確認)
Unityで空のGameObjectを作って、シーンに追加したいとき、1Instantiate(new GameObject());
あれー!!なんか2つ作られてるー・・
そうです。実は上のコード、二重でゲームオブジェクトを作っているのです!
というわけで、解決策。
1new GameObject();
Instantiate()と書くことはできないので、new GameObject();とそのまま書いてみます。
これだけじゃ作るだけでコンポーネントのアタッチとか何もできないので、名前を変えてみます。
12GameObject g = new GameObje
…
Read More
なぜかUnityでtransform.Translateができなかった
なんでかわからないけどできなかった。
前は、Animatorでtransformを変えていたからできなかったれど、
今回は違った。
1gameObject.transform.Translate(10, 10, 0);
こんな感じになっていたコードを、
1234var vec3 = gameObject.transform.position;vec3.x += 10;vec3.y += 10;gameObject.transform.position = vec3;
こうしたらできた。
…
Read More