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

Unity拼字游戏开发:如何销毁用户目标对应的实例化预制体?

拼字游戏对应鱼实例匹配与销毁解决方案

1. 给鱼预制体添加专属数据组件

给每个鱼实例绑定一个组件,用来存储自身的目标单词,这样能直接通过组件快速匹配用户输入:

using UnityEngine;
using TMPro;

public class FishWord : MonoBehaviour
{
    public string currentWord;
    private TMP_Text wordText;

    void Awake()
    {
        wordText = GetComponentInChildren<TMP_Text>();
    }

    // 实例化后调用,初始化单词和文本显示
    public void InitWord(string targetWord)
    {
        currentWord = targetWord;
        wordText.text = targetWord;
    }

    // 销毁时自动从活跃列表移除,避免空引用
    void OnDestroy()
    {
        FishSpawner.Instance.activeFishes.Remove(this);
    }
}

2. 用单例管理器维护活跃鱼列表

创建一个鱼生成管理器,统一管理所有活跃的鱼实例,实例化时加入列表,销毁时自动移除:

using UnityEngine;
using System.Collections.Generic;

public class FishSpawner : MonoBehaviour
{
    public static FishSpawner Instance;
    public List<FishWord> activeFishes = new List<FishWord>();
    public GameObject fishPrefab;

    void Awake()
    {
        Instance = this;
    }

    // 生成鱼的方法,外部调用此方法生成实例
    public void SpawnFish(string word)
    {
        GameObject newFish = Instantiate(fishPrefab, /* 替换为你的生成位置逻辑 */, Quaternion.identity);
        FishWord fishComp = newFish.GetComponent<FishWord>();
        fishComp.InitWord(word);
        activeFishes.Add(fishComp);
    }
}

3. 用户输入匹配与销毁逻辑

在输入处理脚本中,遍历活跃列表找到匹配单词的鱼并销毁:

using UnityEngine;
using TMPro;

public class InputHandler : MonoBehaviour
{
    public TMP_InputField inputField;

    // 绑定回车键的提交事件
    public void OnSubmitWord()
    {
        string input = inputField.text.Trim().ToLower();
        if (string.IsNullOrEmpty(input)) return;

        // 倒序遍历,避免移除元素导致索引错乱
        for (int i = FishSpawner.Instance.activeFishes.Count - 1; i >= 0; i--)
        {
            FishWord targetFish = FishSpawner.Instance.activeFishes[i];
            if (targetFish.currentWord.ToLower() == input)
            {
                Destroy(targetFish.gameObject);
                // 如果允许同单词多个鱼,就注释掉break,继续找其他匹配项
                // break;
            }
        }

        inputField.text = "";
    }
}

关键注意事项

  • 统一大小写比较:把用户输入和鱼的单词都转成小写(或大写),避免大小写不匹配的问题。
  • 倒序遍历列表:当从列表中移除元素时,正序遍历会导致后续元素索引偏移,倒序遍历能避免这个问题。
  • 自动维护列表:通过OnDestroy方法自动从列表移除销毁的鱼,无需手动操作,不会出现空引用或残留项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:32:48