You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity+C#棋盘游戏:如何获取玩家点击的Tile对象?

解决棋盘游戏中获取玩家点击Tile对象的问题

原代码存在的核心问题

  1. Tile脚本里的finalTile变量完全多余——点击时只是把当前Tile实例赋值给自己,没有将这个选中的实例传递给Pawn。
  2. Pawn脚本里的selectedTile从未被赋值,直接访问selectedTile.finalTile会引用错误对象(或为空),导致日志输出异常。
  3. Debug.Log的执行时机错误——直接写在字段声明下方会在Awake阶段就运行,此时玩家还未进行任何点击操作。

方案一:全局静态变量存储选中Tile(简单直接)

修改Tile.cs,用静态变量记录当前选中的Tile实例:

public class Tile : MonoBehaviour
{
    // 静态变量全局维护选中的Tile
    public static Tile CurrentSelectedTile;

    void OnMouseUp()
    {
        // 点击时将当前Tile设为选中状态
        CurrentSelectedTile = this;
    }
}

在Pawn.cs中,当需要获取选中Tile时(比如掷出6点后等待玩家选择完成):

public class Pawn : MonoBehaviour
{
    // 比如在掷骰子后调用这个方法检查选中状态
    void ProcessPlayerSelection()
    {
        if (Tile.CurrentSelectedTile != null)
        {
            Debug.Log("选中Tile的位置:" + Tile.CurrentSelectedTile.transform.position);
            // 执行棋子移动到该Tile的逻辑
            // 移动完成后清空选中状态,避免重复触发
            Tile.CurrentSelectedTile = null;
        }
        else
        {
            Debug.Log("玩家未选中任何Tile");
        }
    }
}

方案二:事件通知(解耦性更强)

适合仅特定Tile可被选择的场景(比如掷6点后的3条路径Tile),通过事件传递选中的Tile实例:

修改Tile.cs,添加点击事件:

using UnityEngine.Events;

public class Tile : MonoBehaviour
{
    // 定义Tile点击事件,携带当前Tile实例
    public UnityEvent<Tile> OnTileClicked;

    void OnMouseUp()
    {
        // 触发事件,传递自身实例
        OnTileClicked?.Invoke(this);
    }
}

在Pawn.cs中订阅可选Tile的点击事件:

using System.Collections.Generic;
using UnityEngine;

public class Pawn : MonoBehaviour
{
    // 在Inspector中拖拽绑定掷6点后可选的3个Tile
    public List<Tile> optionalMoveTiles;
    private Tile _targetTile;

    void Start()
    {
        // 给所有可选Tile绑定点击回调
        foreach (var tile in optionalMoveTiles)
        {
            tile.OnTileClicked.AddListener(OnTargetTileSelected);
        }
    }

    void OnTargetTileSelected(Tile clickedTile)
    {
        _targetTile = clickedTile;
        Debug.Log("选中的目标Tile位置:" + _targetTile.transform.position);
        // 执行棋子移动逻辑...
    }
}

内容的提问来源于stack exchange,提问作者Radu Cristea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:01:23