Programming」カテゴリーアーカイブ

プログラミング全般に関するカテゴリーです。

allowSceneActivation=falseを使う場合の注意

SceneManager.LoadSceneAsync

allowSceneActivation = false

で使う場合は、isDonetrueにならないそうなので、気を付けてください。

allowSceneActivation = true

とした後でtrueになるそうです。ちなみに、progressの値も0.9までで止まるみたいです。ロードの完了を待ってシーンを表示するコード書こうとして少しハマってしまいました。

リンク

Unity – Scripting API: AsyncOperation.allowSceneActivation
https://docs.unity3d.com/ScriptReference/AsyncOperation-allowSceneActivation.html

Unity – Scripting API: SceneManagement.SceneManager.LoadSceneAsync
https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSceneAsync.html

C#のプロパティーの簡潔な書き方

C#でプロパティーという書き方がありますが、使っていますか?

float width
{
  get { return size.width; }
}

みたいな書き方です。

これは次のような感じで省略して書くことができるみたいです。

float width => size.width;

setも使いたい場合は少し長くなりますが、次のような感じです。

float width
{
  get => size.width;
  set => set.width = value;
}

Visual Studioの表示で教えてもらったのですが、短かくて読み易くなったような気がします。

リンク

Properties – C# Programming Guide | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties

C#の文字列補完

string.Format

string.Formatを使うと、次のような感じで変数の値を文字列に変換して出力できます。

コード

string name = "abc";
int value = 123;
Debug.Log(string.Format("name={0}, value={1}", name, value));

出力

name=abc, value=123

便利でよく使っていたのですが、C#6の文字列補完を使うとより簡潔な感じで書けるみたいです。

C#6の文字列補完

コード

string name = "abc";
int value = 123;
Debug.Log($"name={name}, value={value}");

出力

name=abc, value=123

16進表記

数値を16進表記で出力したい場合は:xを追加します。
:x4のようにして桁数を指定することもできます。

コード

int value = 123;
Debug.Log($"{value:x} {value:x4}");

出力

7b 007b

リンク

$ – string interpolation – C# reference | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated