みかづきブログ・カスタム

基本的にはちょちょいのほいです。

UnityでCubeがクリックされたことを検知する 🖱️

ものすごく久しぶりにUnityを使い、サーバと通信するモックを作成しました。
Cubeをクリックしたことをサーバに送信したり、サーバからJSONをGETしたり、WebSocketでブラウザとメッセージのやりとりをするモックです。

実装時に、何もかも忘れていたので、忘れないようにメモを残しておきます。

  1. Cubeがクリックされたことを検知 👈 今回はここ
  2. HTTPリクエスト(GET)でJSONの取得
  3. HTTPリクエスト(POST)でJSONの送信
  4. WebSocketによる通信

と、4つのモックを順番に作っていったのですが、まずはCubeがクリックされたことを検知する仕組みの作り方をすっかり忘れていたので、その部分のメモを残します。

開発環境

  • Unity 2022.3.36f1

UnityでCubeにクリックイベントを振る方法

  1. CameraにPhysics Raycasterを追加
  2. SceneにEventSystemを追加
  3. SceneにCubeを追加
  4. CubeにScriptを追加
  5. CubeにEvent Triggerを追加

いろんな方法があるのですが、今回は上記手順で実装します。

CameraにPhysics Raycasterを追加

HierarchyにてCameraを選択し、InspectorのAdd Componentから「Physics Raycaster」を追加します。

SceneにEventSystemを追加

Hierarchyの+から「UI > Event System」を追加します。

SceneにCubeを追加

Hierarchyの+から「3D Object > Cube」を追加します。

CubeにScriptを追加

Projectの+から「C# Script」を作成し、以下のように編集します。

Assets/Scripts/ClickTarget.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ClickTarget : MonoBehaviour
{
    public void OnClick()
    {
        Debug.Log("click.");
    }
}

これでクリックされたらログが表示されるようになります。

そして、編集したスクリプトをSceneのCubeにドラッグ&ドロップします。

CubeにEvent Triggerを追加

HierarchyにてCubeを選択し、InspectorのAdd Componentから「Event Trigger」を追加します。

Event TriggerのAdd New Event Typeから「Pointer Click」を追加し、+を押して。

Pointer Click(BaseEventData)のNone (Object)の部分に、HierarchyからCubeをドラッグ&ドロップします。

No Functionの部分を「ClickTarget > OnClick()」にします。



これで準備OKです。

挙動確認

Unityを実行し、Cubeをクリックするとログに「click.」と表示されることが確認できます。
今回は以上です。

次回はCubeをクリックした際に、HTTPリクエストを投げてJSONをGETします。