zoukankan      html  css  js  c++  java
  • Unity使用可空类型(Nullable Types)

    译林军 范春彦|2014-04-09 09:46|5407次浏览|Unity(375)0

    你怎么确定一个Vector3,int,或float变量是否被分配了一个值?一个方便的方式就是使用可空类型!

    有时变量携带重要信息,但只有在特定的游戏事件发生时触发。例如:一个角色在你的游戏可能闲置,直到他被告知去一个指定的目的地。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class Character : MonoBehaviour
    {
        Vector3 targetPosition;
     
        void MoveTowardsTargetPosition()
        {
            if(targetPosition != Vector3.zero)
            {
                //Move towards the target position!
            }
        }
     
        public void SetTargetPosition(Vector3 newPosition)
        {
            targetPosition = newPosition;
        }
    }

    在这种情况下,我们希望这个角色走向目标位置,仅仅在它被设定的时候。在上面的代码中,我们通过检查targetPosition是否不等于其默认值(0,0,0)来实现.但现在我们有一个问题:如果你想要你的角色move to(0,0,0)呢?你不用怀疑这个值,因为它确实可能会在游戏中出现!

    幸运的是,有一个诀窍来:可空类型.它避免了通过比较任意值来确认一个变量是否被初始化。

    使用可空类型

    创建可空类型,仅需在任何一个值类型(如Vector3,Rect,int,float)的变量声明后,添加一个“?”。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class Character : MonoBehaviour
    {
        //Notice the added "?"
        Vector3? targetPosition;
     
        void MoveTowardsTargetPosition()
        {
            if (targetPosition.HasValue)
            {
                //Move towards the target position!
                //use targetPosition.Value for the actual value
            }
        }
     
        public void SetTargetPosition(Vector3 newPosition)
        {
            targetPosition = newPosition;
        }
    }

    看到这里,可空类型有两个属性我们可以使用:HasValue(如果已经指定了变量则为true,否则false),和Value(变量的实际分配值)。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    //First, check if the variable has been assigned a value
    if (targetPosition.HasValue)
    {
        //move towards targetPosition.Value
    }
    else
    {
        //targetPosition.Value is invalid! Don't use it!
    }

    用法注释

    • 回复可空类型为“无值”,将其设置为null
    • 你不能从类或引用类型(他们已经可以设置为null)创建可空类型

    像往常一样,如果你有任何问题或建议,在下面的评论中回复!

    原文链接:Nullable Types

  • 相关阅读:
    SQL中的cast和convert用法示例
    SpendidCRM:在adminlayout中修改了视图上的字段后,用MyGeneration生成修改脚本
    [转]ASP.NET数据绑定方法
    商城 5051课 纪要
    .net判断用户是否已登录
    Jquery 监视按键,按下回车键触发某方法
    Sharepoint中三个强力的工具(WPManager, OSSEventManager, FriendlyQuery),另增清除已删除用户
    错误处理:此网页不允许使用基本类型"System.Web.UI.MasterPage”该类型未注册为安全类型
    MOSS页面显示“根级别上的数据无效”
    读取/设置超链接或图片类型栏的值
  • 原文地址:https://www.cnblogs.com/forlove/p/3785266.html
Copyright © 2011-2022 走看看