GUI」タグアーカイブ

Unityで貼り付けたボタンをスクリプトからクリックする方法

Unityで貼り付けたボタンをスクリプトからクリックしたい場合はExecuteEvents.Executeを使って次のような感じで実装できるみたいです。

使い方

import UnityEngine.UI;
import UnityEngine.EventSystems;

public Button button; // クリックしたいボタン
void Example()
{
  // ボタンをクリック
  ExecuteEvents.Execute(
    button.gameObject,
    new PointerEventData(EventSystem.current),
    ExecuteEvents.pointerClickHandler);
}

ちなみに、ボタンにフォーカス(Enterキーでクリックできる状態)したい場合は
SetSelectedGameObjectが使えます。(過去記事

リンク

Unity – Scripting API: EventSystems.ExecuteEvents.Execute
https://docs.unity3d.com/2018.3/Documentation/ScriptReference/EventSystems.ExecuteEvents.Execute.html

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のWebGLでテキストが表示されない場合の対処方法

Unity Editorのデバッグ画面ではテキストが表示されているのにWebGLでビルドするとテキストが表示されないという場合、Assetにフォントを追加して、そのファイルを使うようにしてみると表示されることがあるみたいです。

困っているという人は試してみてください。

※日本語テキストを表示したい場合は日本語対応のファイルを準備する必要があります。フォント関係はライセンスが複雑な場合もありますので注意してください。

リンク

Unity – Scripting API: Text
https://docs.unity3d.com/2018.4/Documentation/ScriptReference/UI.Text.html