概要:
Unityゲーム内でマウスクリックイベントを処理する方法を紹介します。この記事ではUniRxを使用せず、基本的なC#コードを使用して、マウスのクリックを検出し、メッセージを進める簡単なゲームのスクリプトを作成します。
本文:
Unityゲーム内でマウスクリックを検出し、クリックイベントを処理するためにUniRxを使用する方法はありますが、ここではUniRxを使用せず、純粋なC#コードを使って同様の動作を実現する方法を紹介します。
ステップ1: ゲームオブジェクトのセットアップ
まず、Unityのシーン内にメッセージを表示するためのUI要素を設定します。テキストメッシュプロ(TextMeshPro)を使用して、メッセージを表示するUIテキストを作成します。
1 2 |
[SerializeField] private TMPro.TMP_Text messageText; // メッセージを表示するTextMeshProUGUI |
ステップ2: クリックでメッセージを進める
マウスの左ボタンがクリックされたときにメッセージを進めるスクリプトを作成します。Update
メソッドを使用して、毎フレームマウスクリックを検出します。
1 2 3 4 5 6 7 |
<code class="!whitespace-pre hljs language-csharp"><span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">Update</span>()</span> { <span class="hljs-keyword">if</span> (Input.GetMouseButtonDown(<span class="hljs-number">0</span>)) { ContinueMessage(); } }</code> |
ステップ3: メッセージキューの管理
メッセージをキューに格納し、クリックイベントごとにキューから次のメッセージを取得して表示します。メッセージキューが空になったら、ゲームオブジェクトを非アクティブに設定してゲームを終了します。
1 2 3 4 5 6 7 8 9 10 11 12 |
<code class="!whitespace-pre hljs language-csharp"><span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">ContinueMessage</span>()</span> { <span class="hljs-keyword">if</span> (messageQueue.Count > <span class="hljs-number">0</span>) { <span class="hljs-built_in">string</span> message = messageQueue.Dequeue(); DisplayMessage(message); } <span class="hljs-keyword">else</span> { gameObject.SetActive(<span class="hljs-literal">false</span>); } }</code> |
ステップ4: メッセージを表示
最後に、DisplayMessage
メソッドを使用してメッセージを表示します。これにより、画面に次のメッセージが表示されます。
1 2 3 4 |
<code class="!whitespace-pre hljs language-csharp"><span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">DisplayMessage</span>(<span class="hljs-params"><span class="hljs-built_in">string</span> message</span>)</span> { messageText.text = message; }</code> |
結論:
Unityゲーム内でマウスクリックイベントを処理する方法を紹介しました。UniRxを使用せず、基本的なC#コードを使用してマウスクリックを検出し、メッセージを進める簡単なゲームのスクリプトを作成しました。 UniRxを使用しないアプローチでも、Unity内でクリックイベントを処理することができます。
参考リンク:
- TextMeshPro Unity Asset(テキスト表示用)
コメントを残す