2020 年 11 月 - 19 文章

Unity扩展脚本模板(以Lua为例) 有更新!

  |   0 评论   |   0 浏览

在项目中开发中,经常会创建大量的脚本类的文件,比如使用Lua时,需要创建新的Lua脚本,学习或使用Shader时也会创建一些新的Shader文件,对于这些文件如果从头开始写将会是一个痛苦的事情,而且多数内容是重复的。在使用很多其它工具时,其都提供或者可以自定义一些标准的模板,根据模板创建出含有基础内容的脚本文件,然后在其基础上进行修改即可。

其实Unity也提供了一些标准的模板,可以帮助我们创建新的文件,比如可以在Project面板右键或者通过Assets/Create菜单中创建Shader、C#脚本等,当创建完后可以修改文件名称,名称修改完成后文件内容对应的内容也被修改。

本文将重点以Lua脚本为例来解释如何扩展代码模板

EditorWindow居中显示实现/获取Unity主窗口的区域信息 有更新!

  |   0 评论   |   0 浏览

在编辑EditorWindow的时候,某些情况下,我们希望打开的窗口相对于Unity编辑器来说居中显示,一般情况下通过new Rect(0, 0, Screen.currentResolution.width, Screen.currentResolution.height)获得的是主显示器窗口的尺寸,但是如果Unity窗口非全屏或者使用多个显示器做开发,则无法得到正确的位置。

本文将介绍一种通过反射方式可以得到Unity主窗口位置信息的方法,同时也会提供对应的扩展实现以简化将EditorWindow居中显示

Unity中使用NUnit进行单元测试 第二章:断言(Assert)详解

  |   0 评论   |   0 浏览

NUnit提供了一些辅助函数用于帮助判断某个被测试的函数是否正确执行,通常我们把这些函数统称为断言。使用这些断言可以判断条件是否为真、两个数据是否相相等或者不等、或者其它的一些情况。后面的内容将详细的介绍NUnit提供的断言(Assert)方法

NUnit最常用的断言主要集中在NUnit.Framework.Assert类中,对于集合的断言在NUnit.Framework.CollectionAssert类中进行了扩展,对于目录的断言在NUnit.Framework.DirectoryAssert类中进行了扩展,对于字符串类的断言在NUnit.Framework.StringAssert类中进行了扩展,对于文件类的断言在NUnit.Framework.FileAssert类中进行了扩展。

Unity中使用NUnit进行单元测试 第一章:简介与安装 有更新!

  |   0 评论   |   0 浏览

对于早期在互联网开发时,尤其是对服务器开发来说进行编写测试用例进行测试是非常有必要的,但是目前在游戏开发中,对于单元测试很多公司或者团队是基本忽略的,其实也不是开发者不希望进行单元测试,只是由于开发时间或者重视度不够才会忽略了测试用例的编写。

但是本文中将强调:

  1. 即使在Unity游戏开发中进行单元测试也是非常重要的,尤其是对于开发游戏框架或者底层逻辑来说更重要。
  2. 即使在Unity游戏开发中进行单元测试也是非常重要的,尤其是对于开发游戏框架或者底层逻辑来说更重要。
  3. 即使在Unity游戏开发中进行单元测试也是非常重要的,尤其是对于开发游戏框架或者底层逻辑来说更重要。

对于NUnit的话,无论是直接在VS中使用、直接测试DLL中的用例、也可以在Unity中直接使用,对于使用官方提供的工具一般情况下不会直接使用,所以本文中也将重点介绍如何在VS中使用NUnit以及如何在Unity中使用NUnit为主要内容

Unity中使用NUnit进行单元测试 总章 有更新!

  |   0 评论   |   0 浏览

在传统软件开发过程中,能够编写单元测试用例是一个需要必备的技能。但是到游戏开发后,进行单元测试往往被忽略掉了,很多技术开发基本上都无法编写测试用例。造成这一问题的原因一来是由于游戏行业开发时间太短,往往都在加班赶进度,慢慢的整个项目组中进行单元测试逐渐被忽略,对于服务器端的开发还好,经常会看到服务器端的同学进行着单元测试,但是对于客户端来说基本上已经忽略掉这一步的必要操作了,甚至很多客户端同学都不知道什么是单元测试,以及如何进行单元测试。

介于上述的原因,本文将以多个章节的形式,对于如何在Unity中使用NUnit进行单元测试进行简要的描述,希望能够对NUnit有一定的了解

C#中的Dispose模式 有更新!

  |   0 评论   |   0 浏览

在C#中的每一个类型都可以看做是一种资源,这些资源可以分为两类:

  • 托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象。
  • 非托管资源:不受CLR管理的对象,如Windows的窗口,文件句柄、数据库连接、套接字、COM对象等。

对于托管资源来说,由于受到CLR的管理,我们不需要关心资源释放的问题,完全可以依赖于垃圾回收器来进行内存的管理,但是对于非托管资源来说,由于其不受CLR管理,使用完毕后,就需要显式释放这些资源。

对于非托管资源,则应该执行以下操作:

  • 实现Dispose模式

    这要求你提供 IDisposable.Dispose 实现以启用非托管资源释放,当不再需要此对象(或其使用的资源)时,调用者可以通过调用Dispose方法释放非托管资源

  • 调用者忘记调用Dispose方法的情况下,需要提供一种方法来释放非托管多资源

    • 使用安全句柄包装非托管资源
    • 重写 Object.Finalize 方法

本方将重点总结一下Dispose模式的实现方式及注意事项,同时会结合《编写高质量代码改善C#程序的157个建议》一书中的内容进行一下总结。

Unity中的特殊目录

  |   0 评论   |   0 浏览

在项目开发中我们经常会创建很多不同的目录,以进行资源的管理,对于Unity项目中来,Unity规定了一些特殊的目录,其包含有不同的含义,有些与API的使用有关,有些会影响到脚本的编译顺序,本文将重点介绍Unity中的那些特殊的目录,以及脚本的编译顺序

YAML 第二章 YAML与Unity

  |   0 评论   |   0 浏览

Unity引擎对资源和对象序列化可以使用二进制进行存储,同时也可以使用YAML格式的文本文件进行序列化,本文中将对Unity使用YAML序列化进行详细的阐述,希望可以更加深入了解Unity的序列化

YAML 总章 有更新!

  |   0 评论   |   0 浏览

YAML独立于JSON、XML等文本格式,逐渐被大家熟知。在Unity引擎中,可以设定序列化采用YAML语言,更是加大了对于YAML的使用。本文从YAML的基本概念、基本语法、Unity中如何进行序列化、及如何使用C#操作YAML几个方面进行详细的阐述,希望能够和大家一起学习YAML。

使用VS的命令(devenv)编译C#项目 有更新!

  |   0 评论   |   0 浏览

VS做为C#开发来说是非常棒的IDE工具,其功能的强大之处足以满足整个开发的要求,不过某些时候(比如考虑到要使用自动编译工具,对项目进行自动编译部署之类的)还是希望能使用命令行对C#的项目进行编译,从而实现自动化处理,幸运的是VS也已经考虑到了这个问题,提供了devenv工具进行处理。

MarkDown 基础教程 有更新!

  |   0 评论   |   0 浏览

MarkDown是一个在Web上使用的文本到HTML转换工具,可以通过简单、易读易写的文本格式生成结构化的HTML文档。对于MarkDown来说其设计的目标是【易读易写,成为一种适用于网络的书写语言】。MarkDown相对来说非常简单,可以花费很少的时间就能掌握,所以希望能通过这一篇文章能共同学习好MarkDown使用