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



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



public class Character : MonoBehaviour

{

    Vector3targetPosition;

 

    voidMoveTowardsTargetPosition()

    {

       if(targetPosition != Vector3.zero)

       {

           //Move towards the target position!

       }

    }

 

    public voidSetTargetPosition(Vector3 newPosition)

    {

       targetPosition = newPosition;

    }

}

在这样的情况下,我们希望这个角色走向目标位置,只在它被设定的时候。在上面的代码中,我们通过检查targetPosition是否不等于其默认值(0,0,0)来实现.但如今我们有一个问题:假设你想要你的角色moveto(0,0,0)呢?

你不用怀疑这个值,由于它确实可能会在游戏中出现!

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

使用可空类型

创建可空类型,仅需在不论什么一个值类型(如Vector3,Rect,int,float)的变量声明后,加入一个“?”。



public class Character : MonoBehaviour

{

    //Notice theadded "?"

    Vector3?

targetPosition;

 

    voidMoveTowardsTargetPosition()

    {

       if (targetPosition.HasValue)

       {

           //Move towards the target position!

           //use targetPosition.Value for the actual value

       }

    }

 

    public voidSetTargetPosition(Vector3 newPosition)

    {

       targetPosition = newPosition;

    }

}

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



//First, check if the variable has been assigned a value

if (targetPosition.HasValue)

{

    //movetowards targetPosition.Value

}

else

{

   //targetPosition.Value is invalid! Don't use it!

}

Unity3d游戏开发中使用可空类型(Nullable Types)的更多相关文章

  1. 游戏开发中IIS常见支持MIME类型文件解析

    游戏开发中IIS常见支持MIME类型文件解析 .apkapplication/vnd.android .ipaapplication/vnd.iphone .csbapplication/octet- ...

  2. [Unity3D]Unity3D游戏开发3D选择场景中的对象,并显示轮廓效果强化版

    大家好,我是秦培,欢迎关注我的博客,我的博客地址blog.csdn.net/qinyuanpei. 在上一篇文章中,我们通过自己定义着色器实现了一个简单的在3D游戏中选取.显示物体轮廓的实例. 在文章 ...

  3. [Unity3D]Unity3D游戏开发之伤害数值显示

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念 ...

  4. TDD在Unity3D游戏项目开发中的实践

    0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...

  5. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  6. Unity3D游戏开发初探—3.初步了解U3D物理引擎

    一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...

  7. Unity3D 游戏开发构架篇 ——角色类的设计与持久化

    在游戏开发中,游戏角色占了很大的篇幅,可以说游戏中所有的内容都是由主角所带动.这里就介绍一下角色类的设计和持久化. 一.角色类应用场景和设计思想 游戏中的角色类型不一而足,有不同的技能,有不同的属性等 ...

  8. Unity3D游戏开发之连续滚动背景

    Unity3D游戏开发之连续滚动背景 原文  http://blog.csdn.net/qinyuanpei/article/details/22983421 在诸如天天跑酷等2D游戏中,因为游戏须要 ...

  9. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

    提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...

随机推荐

  1. SVN下载时提示“已经锁定”

    问题现象:同事让我提交代码,我就先下载后提交,但下载时提示“D:\ABC”已经锁定. 问题原因:原因不明. 问题处理:向上退一级,右击目录->SVN->"清理"-> ...

  2. div模态显示内容

    业务需要,上传的图片,本地显示大图: 模态代码: <div onclick="hidebigimg()" class = "bg-model" style ...

  3. Java基础篇--字符串处理(StringBuffer)

    字符串处理 在Java中最常将字符串作为String类型对象来处理.同时String中也提供了很多操作字符串的函数(可自行查阅资料),而本篇将介绍StringBuffer如何操作字符串. String ...

  4. IBM ILOG JViews Charts 产品及功能介绍

    摘抄连接:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1004_lidb_ilogjchart/ IBM I ...

  5. [Linux实用工具]Linux监控工具munin的安装和配置

    〇.摘要 munin是用于Linux系统(也可以监控windows系统)的监控软件.munin除了可以监控系统的各项数值之外,最大的好处是可以自己编写插件自定义监控需要的数值.整个系统的架构简单明了, ...

  6. [uboot]uboot中显示logo

    http://blog.chinaunix.net/uid-20543672-id-3246292.html

  7. Using the SAMA5D2-compatible ADC device

    Introduction Kernel Software triggers Unsigned single-ended channel conversion Setup Test procedure ...

  8. elasticsearch之kibana安装

    我用的elasticsearch版本是5.2.2的,kibana也要对应的版本 下载kibana 下载网址:https://artifacts.elastic.co/downloads/kibana/ ...

  9. amcharts categoryAxis

    amcharts中给出的sample lineWithMultipleValueAxes,是这样的 我们对横坐标label做一些改变: var categoryAxis = chart.categor ...

  10. 基于 bootstrap 的 vue 分页组件

    申手党点这里下载示例 基于 bootstrap 的 vue 分页组件,我想会有那么一部分同学,在使用Vue的时候不使用单文件组件,因为不架设 NodeJS 服务端.那么网上流传的 *.vue 的各种分 ...