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

Unity井字棋游戏按钮点击X与0无法交替显示的问题

问题原因

每个按钮都挂载了独立的Xand0Script实例,每个实例里的isX变量都是独立初始化的true。所以第一次点击任意按钮时,该按钮的isX为true,会显示X并把自己的isX设为false;但其他按钮的isX依然是true,点击它们时还是会显示X,只有重复点击同一个按钮,才会触发它自己的isX切换逻辑显示0。这和你想要的全局轮流切换X/0的逻辑完全不符。

修改方案

需要把“当前该下X还是0”的状态改成全局共享的,而不是每个按钮各自维护。这里提供两种简单可行的方式:

方式1:使用静态变量共享状态

直接把脚本里的isX改成静态变量,让所有按钮实例共用同一个状态:

using TMPro;
using UnityEngine;

public class Xand0Script : MonoBehaviour
{
    // 静态变量,所有按钮实例共享同一个状态
    public static bool isX = true;
    public TextMeshProUGUI text;
    // 标记按钮是否已被点击,防止重复修改
    private bool isClicked = false;

    public void placeXor0()
    {
        if(isClicked) return;

        text.text = isX ? "X" : "0";
        // 切换全局回合状态
        isX = !isX;
        // 标记按钮已点击
        isClicked = true;
    }
}

方式2:使用GameManager管理全局状态

如果后续要扩展胜负判断、游戏重置等功能,更推荐用独立的管理类:

  1. 创建空物体命名为GameManager,挂载以下脚本:
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;
    public bool isXTurn = true;

    private void Awake()
    {
        // 单例模式确保全局只有一个GameManager实例
        if(Instance == null)
        {
            Instance = this;
        }
        else
        {
            Destroy(gameObject);
        }
    }

    // 切换回合的公共方法
    public void SwitchTurn()
    {
        isXTurn = !isXTurn;
    }
}
  1. 修改按钮上的Xand0Script:
using TMPro;
using UnityEngine;

public class Xand0Script : MonoBehaviour
{
    public TextMeshProUGUI text;
    private bool isClicked = false;

    public void placeXor0()
    {
        if(isClicked) return;

        text.text = GameManager.Instance.isXTurn ? "X" : "0";
        GameManager.Instance.SwitchTurn();
        isClicked = true;
    }
}

这种方式更利于后续功能扩展,是Unity开发中管理全局状态的常用模式。

额外说明

两种方式都解决了全局轮流切换X/0的问题,同时加入isClicked判断,避免按钮被重复点击修改,符合井字棋的基本规则。如果需要重置游戏,只需要重置全局的回合状态,以及所有按钮的isClicked标记和文本内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:25:06