关于Unity null check的误区

本文探讨了Unity中自定义的'=='操作符的用途,包括提供更好的调试信息、判断C++侧Object是否被销毁,以及重载带来的问题。Unity的'=='重载使得null检查更复杂,建议在编写代码时避免使用语法糖,以防止意外错误。同时,文章解释了UGUI源码中为何需要特殊的null检查方法。
摘要由CSDN通过智能技术生成

前言

这篇博文的起因还得追溯到我在学习UGUI源码时遇到的“奇怪”代码:

public abstract class UIBehaviour : MonoBehaviour
{
    // Other code...

    public bool IsDestroyed()
    {
        // Workaround for Unity native side of the object
        return this == null;
    }
}

当时我很诧异为什么需要专门写一个方法来执行这么简单的运算,所以就查阅了一些相关资料,结果发现了一些有趣的事,甚至让我想起曾经怎么也查不出来的Bug是怎么发生的。
本来参考了以下几篇博文:
Custom == operator, should we keep it?
Checking for null references in Unity

Unity 自定义的 == 操作符

如果你翻看过 UnityEngine.Object 中的API,会发现其中悄咪咪的对 “==” 进行过重载操作:

namespace UnityEngine
{
    public class Object
    {
        // Other code...

        public static bool operator ==(Object x, Object y);
    }
}

注意!这里所有的Ob

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值