IPointerClickHandler インターフェースの基本を理解していること格子状に並べられたセルをクリックすると、自身とその上下左右最大4個のセルの色が反転するプログラムを実装を目指します。プレイヤーはルールに従って色が反転するセルを操作し、最終的に全てのセルを指定の色に染めることができれば勝ちとなります。その他、基本的なルールはライツアウトに従うものとします。
新規シーンの状態から UI の Canvas ゲームオブジェクトを作成します。

作成した Canvas ゲームオブジェクトに Grid Layout Group コンポーネントを追加します。

追加した Grid Layout Group コンポーネントの Spacing の X と Y の値を 10 に、Child Alignment の設定を Middle Center に変更します。グリッド上に並べるセルの行数または列数を Constraint の設定で固定化できます。例えば Constraint の設定を Fixed Column Count に変更して、下部の Constraint Count を 5 にすると列数が 5 列に固定されます。この設定は課題に応じて、スクリプトから変更しても構いません。

新規に C# スクリプトを作成し、Canvas ゲームオブジェクトに設定します。

Canvas ゲームオブジェクトに設定した C# スクリプトを編集して、格子状に並べられたセルを生成しましょう。この場では UI の Image コンポーネントを使ってセルの色を設定します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Sample : MonoBehaviour, IPointerClickHandler
{
private void Start()
{
for (var r = 0; r < 5; r++)
{
for (var c = 0; c < 5; c++)
{
var cell = new GameObject($"Cell({r}, {c})");
cell.transform.parent = transform;
cell.AddComponent<Image>();
}
}
}
public void OnPointerClick(PointerEventData eventData)
{
var cell = eventData.pointerCurrentRaycast.gameObject;
var image = cell.GetComponent<Image>();
image.color = Color.black;
}
}

この時点ではセルの初期色が白で、クリックすると黒に反転することが確認できます。
SerializeField を使って行数と列数を Inspector ビューから設定できるようにし、実行時に生成されるセルの数を変更できるようにしてください。IPointerClickHandler でクリックイベントを受け取ったpointerCurrentRaycast.gameObject でクリックされたセルを特定した