UnityでキーボードによるUIのフォーカス移動方法

Unityでキーボードを使ってUIのフォーカスを移動したい場合はNavigationが使えるみたいです。

Inspectorから設定することもできますが、スクリプトから設定したい場合は次のような感じで実装できます。

Navigation navigation = new Navigation();

navigation.mode = Navigation.Mode.Explicit;
navigation.selectOnUp = button1; // 上キーでフォーカスを移したいところ
navigation.selectOnDown = button2; // 下キーでフォーカスを移したいところ
navigation.selectOnLeft = button3; // 左キーでフォーカスを移したいところ
navigation.selectOnRight = button4; // 右キーでフォーカスを移したいところ

button.navigation = navigation;

こんな感じで設定すれば、buttonにフォーカスがある時に上キーを入力するとbutton1にフォーカスが移動し、左キーを入力するとbutton3にフォーカスが移動します。

SetSelectedGameObject

ちなみに、最初起動したばかりの段階ではどこにもフォーカスがありません。

初期値としてどこかにフォーカスを設定したい場合はSetSelectedGameObjectを使って設定できます。

参考: UnityのUIでフォーカスを移したい場合はSetSelectedGameObject

Unityでセーブデータを保存したい場合はJsonUtilityが便利

Unityでセーブデータを保存したい場合はJsonUtilityを使うと便利です。

使い方は次のような感じです。

public class ExampleData
{
  public string Name;
  public int Value;
}
public class Example : MonoBehaviour
{ 
  void Start()
  { 
    var data1 = new ExampleData { Name = "abc", Value = 123 };

    var json = Save(data1);
    Debug.Log(json);

    var data2 = Load(json);
    Debug.Log($"Name={data2.Name} Value={data2.Value}");
  }

  ExampleData Load(string json)
  {
    return JsonUtility.FromJson<ExampleData>(json);
  }

  string Save(ExampleData data)
  {
    return JsonUtility.ToJson(data);
  }
}

実行結果

{"Name":"abc","Value":123}
Name=abc Value=123

ArgumentException

MonoBehaviourを継承したクラスでJsonUtility.FromJsonを使うとArgumentExceptionという例外が発生します。久し振りに使うと忘れて悩むことがあるので気を付けてください。

public class ExampleData : MonoBehaviour
{
  public string Name;
  public int Value;
}

リンク

Unity – Scripting API: JsonUtility
https://docs.unity3d.com/ScriptReference/JsonUtility.html

Windowsインストールのシステム要件

古いPCや仮想環境で使おうと思ってWindowsインストールに必要なスペックを確認してみました。

Windows XPWindows 7Windows 8.1Windows 10Windows 11
CPU233 MHz以上1GHz以上1GHz以上
PAE, NX, SSE2
1GHz以上1 Ghz以上
2コア以上
RAM64 MB1 GB (32-bit)
2 GB (64-bit)
1 GB (32-bit)
2 GB (64-bit)
1 GB (32-bit)
2 GB (64-bit)
4 GB
HDD1.5 GB16 GB (32-bit)
20 GB (64-bit)
16 GB (32-bit)
20 GB (64-bit)
64 GB
GraphicsDirectX 9DirectX 9DirectX 9DirectX 12
Display800×600以上800×600以上720p以上
その他UEFI, TPM 2.0
Windowsインストールのシステム要件

※WindowsXPは32-bit版です。
※Windows 11 Home editionは上記内容に加えてインターネット接続環境が必須です。
※Windows11は2024年3月時点での動作環境です。

リンク

Windows 7 system requirements
https://support.microsoft.com/en-us/windows/windows-7-system-requirements-df0900f2-3513-a851-13e7-0d50bc24e15f

Windows 8.1 System requirements
https://support.microsoft.com/en-us/windows/system-requirements-2f327e5a-2bae-4011-8848-58180a4353a7

Windows 10 system requirements
https://support.microsoft.com/en-us/windows/windows-10-system-requirements-6d4e9a79-66bf-7950-467c-795cf0386715

Windows 11 System Requirements
https://support.microsoft.com/en-us/windows/windows-11-system-requirements-86c11283-ea52-4782-9efd-7674389a7ba3