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

Unity检测Text文本解锁成就、OnTriggerEnter2D触发动画不生效问题

Unity 两处功能异常解决方案

1. OnTriggerEnter2D 触发后播放动画不生效

按以下顺序排查即可:

  • 碰撞双方必须都挂载Collider2D组件,且至少其中一方的Collider2D勾选了Is Trigger属性
  • 碰撞双方至少有一方挂载了Rigidbody2D组件,如果是静止的碰撞体可以把Rigidbody2D的Body Type设为Kinematic避免受物理影响
  • 检查Unity项目设置的Physics 2D配置,确认两个碰撞物体所在的层级在层级碰撞矩阵中是允许交互的
  • 确认OnTriggerEnter2D方法拼写完全正确,参数为Collider2D other,且脚本挂载在带碰撞体/刚体的物体上
  • 动画相关检查:确认Animator组件已正确挂载、状态机对应状态存在、触发动画的参数名无拼写错误,且调用的参数设置方法匹配参数类型(如触发型参数用SetTrigger、布尔型用SetBool)

2. Text文本匹配解锁成就逻辑不触发

错误原因

你代码中的判断逻辑是直接将Text组件对象和字符串做相等判断,两个完全不同类型的对象对比永远返回false,所以永远不会进入解锁分支。你需要调用Text组件的text属性拿到实际显示的文本内容再做对比。

修复后的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TrpohyForCherries : MonoBehaviour
{
    public UnityEngine.UI.Text txt;

    // Update is called once per frame
    void Update()
    {
        // 新增.text属性调用获取实际文本内容
        if(txt.text == "Cherries: 12")
        {
            Debug.Log("Trophy Unlocked!");
            GameJolt.API.Trophies.Unlock(******);
            // 解锁后可以销毁当前脚本避免重复触发
            Destroy(this);
        }
    }
}

额外优化建议

不要在Update中每帧检测文本内容,可以在樱桃数量更新的逻辑中同步触发成就判断,减少不必要的性能消耗。另外需要确认Text显示的文本和判断的字符串完全一致,包括空格、大小写、符号都不能有出入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:06:03