随笔分类 - unity3d
摘要:0x00 前言 在很长一段时间里,Unity项目的开发者的优化指南上基本都会有一条关于使用GetCompnent方法获取组件的条目(例如14年我的这篇博客 "《深入浅出聊Unity3D项目优化:从Draw Calls到GC》" )。有时候还会发展为连一些Unity内部对象的属性访问器都要小心使用的注
阅读全文
摘要:0x00 前言: 自从年底换了公司之后已经有一段时间没有写博客了。可能是这段时间工作的更愉快了,所谓“业精于勤,而荒于嬉”吧(此处有表情)。这周终于意识到了这点,看来还是要恢复之前写博客的状态。今天就来写写游戏引擎和脚本编程的话题吧。 0x01 游戏脚本,用还是不用? 这是一个问题? 游戏开发提供对
阅读全文
摘要:0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了。敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理。项目从最初使用svn到之后的Git One Track策略再到现在的GitFlow策略,中间有经验也有教训,所以记录在本文,既是和各位朋友交流也供自己日后查阅。 0x01 基础:U
阅读全文
摘要:0x00 单元测试Pro & Con 最近尝试在我参与的游戏项目中引入TDD(测试驱动开发)的开发模式,因此单元测试便变得十分必要。这篇博客就来聊一聊这段时间的感悟和想法。由于游戏开发和传统软件开发之间的差异,因此在开发游戏,特别是使用Unity3D开发游戏的过程中编写单元测试往往会面临两个主要的问
阅读全文
摘要:5.创建属性和命令 本小节主要内容包括: 在Element节点上创建属性数据 在Element节点上创建命令数据 5.1.在Element节点上创建属性数据 在这里,我们首先为Login节点中的属性(Properties)部分添加一个新的属性,该属性为String型,名为UserName。 首先选中
阅读全文
摘要:1.概览 uFrame是提供给Unity3D开发者使用的一个框架插件,它本身模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分)。因为用于Unity3D,所以它向开发者提供了一套基于Editor的可视化编辑工具,可以用来管理代码结构等。本文为uFrame1.6
阅读全文
摘要:1.概览 Unity3D 5.0版本之后的AssetBundle机制和之前的4.x版本已经发生了很大的变化,一些曾经常用的流程已经不再使用,甚至一些老的API已经被新的API所取代。 因此,本文的主要内容就是分析5.X版本的AssetBundle机制(包括 创建资源包、压缩资源包、加载资源包和从资源
阅读全文
摘要:1.概览 "uFrame" 是提供给Unity3D开发者使用的一个框架插件,它本身模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分)。因为用于Unity3D,所以它向开发者提供了一套基于Editor的可视化编辑工具,可以用来管理代码结构等。 需要指出的是它的
阅读全文
摘要:关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音。那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使用U3D 5.3.X之后版本已经集成的单元测试模块Editor Test Runner。
阅读全文
摘要:首先要说明的是,本文的标题事实上来自于知乎上的一个同名问题:[为什么directX里表示三维坐标要建一个4*4的矩阵? - 编程][1] 。因此,正如Milo Yip大神所说的这个标题事实上是存在问题的:矩阵是用于表示变换而不是坐标的。再了解了矩阵的作用之后,我们就要继续思考为什么变换要使用一个4×4的矩阵而不是3×3的矩阵呢?是不是多此一举呢?下面我们就来聊聊这个话题。
阅读全文
摘要:如题目所示,本文要来聊一聊在游戏开发中经常会涉及到的话题——游戏AI。设计游戏AI的目标之一是要找到一种便于使用并容易拓展的的方案,常见的一些游戏AI方案包括了有限状态机(FSM)、分层有限状态机(HFSM)、面向目标的动作规划(GOAP)以及分层任务网络(HTN)和行为树(BT)等等。下面我们就来聊一聊比较有代表性的游戏AI方案——状态机。
阅读全文
摘要:蛮牛杯启动了,大家开始报名! http://cup.manew.com/这不是一篇普通的通稿,别着急忽略它。它是一篇可以让你梦想变现的通稿!从某一天开始,游戏蛮牛就立志要为开发者服务,我们深知这一切的重要性,大家都亲切的称我们为“公益组织”,“为开发者服务”也成为了我们一直遵循的信仰。然而在过去...
阅读全文
摘要:首先祝大家中秋佳节快乐~0x00 前言众所周知的一点是C#语言是一种强调类型的语言,而C#作为Unity3D中的游戏脚本主流语言,在我们的开发工作中能够驾驭好它的这个特点便十分重要。事实上,怎么强调C#的这个特点都不为过,因为它牵涉到编程的很多方面。一个很好的例子便是我们本文要介绍的内容——可空型,...
阅读全文
摘要:通过上一篇博客《匹夫细说C#:庖丁解牛聊委托,那些编译器藏的和U3D给的》的内容,我们实现了使用委托来构建我们自己的消息系统的过程。但是在日常的开发中,仍然有很多开发者因为这样或那样的原因而选择疏远委托,而其中最常见的一个原因便是因为委托的语法奇怪而对委托产生抗拒感。 因而本文的主要目标便是介绍一些
阅读全文
摘要:在日常的工作中,偶尔能遇到这样的问题:“为何游戏脚本在现在的游戏开发中变得不可或缺?”。那么这周我就写篇文章从游戏脚本聊起,分析一下游戏脚本因何出现,而mono又能提供怎样的脚本基础。最后会通过模拟Unity3D游戏引擎中的脚本功能,将Mono运行时嵌入到一个非托管(C/C++)程序中,实现脚本语言和“引擎”之间的分离。
阅读全文
摘要:写篇小文来聊聊在Mac上如何使用Visual Studio Code编译和调试C#代码,最后匹夫也会尝试把Visual Studio Code嵌入Unity3D中,作为一个准“IDE”使用。
阅读全文
摘要:0x00 前言: 匹夫在日常和别人交流的时候,常常会发现一旦讨论涉及到“类型”,话题的热度就会立马升温,因为很多似是而非、或者片面的概念常常被人们当做是全面和正确的答案。加之最近在园子看到有人翻译的《C#堆vs栈》系列,觉得也挺有趣,挺不错的,所以匹夫今天也想从存储位置的角度聊聊所谓的值类型,同时也
阅读全文
摘要:CIL究竟应该使用call呢还是应该使用callvirt呢?那么匹夫就和各位一起去分析下这个话题背后的故事吧~~从ILGenerator实现一段本该报错的代码,到揭露CIL代码中的call 和 callvirt的异同,探索c#方法调用背后隐藏的知识点。
阅读全文
摘要:之前匹夫也介绍过CIL其实也是面向对象的,所以寻思着大过年的,不如就写一个类,一个用来抽象化小匹夫的类吧,既可以介绍下小匹夫,小匹夫也可以借这个类给各位拜年。那么顺序由上到下,无外乎如何声明一个类,类成员如何定义,以至于到后来如何实例化一个类,并且调用实例的各个方法,当然本文的完整CIL代码各位可以在附录部分看到。
阅读全文
摘要:匹夫印象里遇到的童靴,提Unity3D项目优化则必提DrawCall,这自然没错,但也有很不好影响。因为这会给人一个错误的认识:所谓的优化就是把DrawCall弄的比较低就对了。对优化有这种第一印象的人不在少数,drawcall的确是一个很重要的指标,但绝非全部。
阅读全文