- 博客(14)
- 收藏
- 关注
原创 【Unity连载】斗兽棋-棋类游戏开发演示(2)
四.游戏操作与指令如同养育一个婴儿,父母总会一步步引领孩子成长,从蹒跚学步到来去如风;我们对游戏功能的开发,也无疑应当从走出第一步棋开始。现在,我们已经构建出了棋盘、棋子等基本的游戏逻辑对象;那么是时候编写功能,让棋子在棋盘上移动了。4.1 选中棋子准备开始下棋!首先,第一个问题出现:棋怎么下?如果你在QQ游戏、联众等在线棋牌平台玩过象棋、军棋等棋类,或者玩过《文明6》等回合制战棋游戏,那么对于棋类游戏的基本操作方式一定不会陌生。假设轮到玩家A走棋——A点击一个棋子,选中这个棋子;
2021-09-06 12:35:11 2073 2
原创 【Unity连载】斗兽棋—棋类游戏开发演示(1)
“黄梅时节家家雨,青草池塘处处蛙。有约不来过夜半,闲敲棋子落灯花。”“象棋终日乐悠悠,苦被严亲一旦丢。兵卒坠河皆不救,将军溺水一齐休。马行千里随波去,象入三川逐浪游。炮响一声天地震,忽然惊起卧龙愁。”棋类游戏是最早的“电子游戏”。从开发者的视角来说,虽然棋类游戏的玩法是相对简单的回合制,内容也远没有电子游戏那样复杂;但它们的玩法中的经典元素,却非常适合于游戏开发过程中的入门级和中级训练。具体到使用Unity开发而言,棋类游戏主要依赖基本的编程思想和简易算法来实现,而非依赖于Unity提供的物理碰撞、
2021-02-28 13:52:37 4507 2
原创 【Vic的小课堂】Unity游戏功能(2)—第一人称镜头
·序言“你最早喜欢上的游戏类型是什么?”如果询问每一位游戏爱好者和游戏开发者,那么最多次听到的答案,或许非FPS(First-Person Shooting,第一人称射击)类型游戏莫属。甚至说,若要首次感受到游戏的乐趣,甚至不必去体验“第一人称射击”的纷飞战火。当你在屏幕前移动鼠标,旋转视角,向周围的世界好奇张望的时候,游戏的乐趣和精彩,已经足以在你心中埋下梦的种子。【自由旋转视角】是一项十分常见的游戏功能;这项功能允许玩家移动鼠标来使视角转向不同的方向,以此支持各类游戏中的观望...
2020-12-08 15:49:21 2364 2
原创 【Vic的小课堂】Unity实现游戏功能(1)—矩形框选
·略带吐槽的序言Unity是一款功能强大且运用广泛的引擎,但它也存在着一些颇受诟病的缺点;对于纯正的游戏热爱者而言,Unity整个引擎的功能组织较为“白板”:它看上去很像是复杂化的代码编辑器,一切内容等待你的书写,而你很难认为它针对某一类游戏的典型需求进行过优化。或者说,Unity不易直接实现任何一种令人惊喜或熟悉的游戏功能。(相比之下,虚幻引擎有着广受喜爱的蓝图机制,可以为开发者实现常见游戏功能提供很大便利)简单解释一下前面是什么意思。无论我们大家的编程基础、代码实力如何,每当构思并试图创作
2020-08-29 05:23:29 6880 8
原创 【学习笔记】到底是谁先开枪?——网络游戏同步机制初探
在编写网络游戏的过程中,我们经常会遇到同步(Sync)的概念。刚刚接触到这个概念时或许很难理解,都是一样的服务器,相同内容的客户端程序,为什么需要进行同步?同步的原理是怎样的,不同步又会产生怎样的后果呢?同步,简单地说就是设法确保不同客户端上的游戏表现一致。要想了解为什么需要同步,我们首先来探究一下,一个没有同步机制的游戏,会产生什么样的表现。假设在游戏中,玩家A和玩家B用手枪决斗。他们都只剩最后1点生命值,谁先开枪命中对方,即可击败对方并获得游戏的胜利。最基础的,不带任何同步措施的网.
2020-08-16 20:55:51 936
原创 Unity数据读写与存档(2)Json:成为神笔马良
在上一篇我们知道,通过引入适当的第三方库并编写代码,就可以在Unity内,从Excel表格中读取一些数据。配置表的存在,的确可以帮助开发团队中没有编程基础的小伙伴管理游戏数据,或者将游戏的策划数据较为方便地批量转移到Unity内;不过,使用Excel来管理游戏数据,功能还是较为有限,而且使用起来不方便。Excel表格只适合存储简单的文本和数字类数据,对于数组、列表等复杂数据则完全无能为力;此外,读取配置表时必须手动编写非常繁琐的读表逻辑,将表格内各单元格的数据赋值到代码内部的各种变量上。更可怕的是,
2020-07-06 11:47:37 984
原创 Unity 数据读写与存档(1)——配置表初探
1.1 与策划小伙伴协同工作如果大家在使用Unity的游戏公司工作,或者对游戏公司的工作流程与技术有所知晓,相信一定会或多或少地听说过“配置表”这个东西。什么是配置表呢?很简单,配置表就是一些普通的Excel表格,即.xlsx文件;而使用配置表,则是一种在游戏的团队开发过程中十分常见的工作方式。配置表是做什么用的?一般来说,配置表与游戏中的人物属性、道具属性等数值设定密切相关。例如,游戏中有100名不同的角色,每个角色都拥有各自的名字、生命值、攻击力和移动速度,不同角色的以上数据各不相同。在游戏
2020-06-19 20:39:12 9392 5
原创 【学习笔记】Unity & C#异常处理(下)
二、【我队友呢??】——针对非预期事件的安全校验2.1 管控非预期事件上一章,我们讨论了有关组件的各类异常的处理。虽然“组件丢失”之类的问题显得十分具体,但它们实际也反映了更宽泛的情况——游戏中可能时常会发生“非预期事件”。一款出色的游戏,应该是稳定,健壮而鲜见bug的;无论玩家作出何种复杂的操作,都应当能够避免异常问题的出现。因此,我们在游戏程序的设计与实现中,必须为程序赋予一种“警觉性”,使其能够随时发现并处理游戏内事物的非预期状态。从这里开始,我们将会研究对游戏内“非预期事件”的
2020-06-15 14:22:29 1272
原创 【学习笔记】Unity & C#异常处理(中)————Unity防bug指南
Unity防bug指南 从这里开始,我们将会讨论Unity游戏编程中一些常见的非预期情况,以及相应的防范与应对策略。一. 【我血条呢??】——组件查找与组件依赖(本章对于有经验的Unity使用者而言可能太过简单了。如果你认为没有什么值得注意的,可以直接前往下一章。)1.1 获取游戏组件 在Unity中,相信大家都了解一个极为常用的方法:GetConponent<T> 此方法用于查找并返回游戏物体上指定类型的组件。例如:Ani...
2020-06-13 17:47:24 1507
原创 【学习笔记】C# & Unity 异常处理(上)
异常处理是C#提供的一整套功能,同时也是游戏逻辑的编程中非常重要的概念和技能;在初学编程时,无论学习哪种语言,老师都会教我们识别异常,并且修改代码来消除异常。例如:int a = 8 / 0;这是一个非常显而易见的bug——程序中出现了"除以0"的问题。事实上,编译器根本就不会容许这种低级错误的出现;在你按下Play键开始编译之前,编译器就会用红色下划线标注这个出错的语句,并提示你修改。那么,来看下一个例子:string[] texts = new string[2];text
2020-06-10 15:36:35 1129 1
原创 C#学习笔记(第3期):事件与事件驱动
C#——事件与event关键字1.事件和事件驱动“事件”不是C#中的功能,而是源于一种程序架构:事件驱动。事件驱动指的是这样一种程序模式:【当某种事件发生时,自动触发并执行该事件的响应程序,而不需要一直观测并判断该事件是否发生。】为什么程序中需要引入事件驱动模式?2.实例:采用事件驱动的好处来看一个例子。假设小明正使用一个水壶来烧水,他需要知道水何时烧开,并在水烧开后及时关火。要实现这一需求,有两种不同的策略:第一种策略:小明揭开壶盖,观察壶中的水是否沸腾。不断重复这一动作
2020-06-08 23:00:28 1915 3
原创 C#学习笔记(第2期):委托-delegate
委托: delegate1.什么是委托delegate(委托)是一种特殊的类,用来定义一群【具有共同特征】的方法;这些方法作用于相同类型和顺序的参数, 但不确定具体的执行方式;对于每一个委托的实例,你可以将具体的方法挂载(+=)到委托实例上,使该委托实例获得具体的执行方式。哈,我猜,你很可能完全听不懂前面我说了什么。事实上,绝大多数相关资料中对委托的解释,比我刚才说的还要晦涩难懂。所以——来听我讲故事吧!【将故事中的各段代码拼接起来,即可编译执行。】2.讲故事时间到!某村庄
2020-06-08 13:32:52 347
原创 C#学习笔记(第1期):接口-interface
接口:interface1.什么是接口interface(接口)是一种引用类型,接口的内部规定了若干个未实现的函数成员。接口通常被当作“基类”一样使用,可以被其它类所继承。【接口】用于反映一群【“大同小异”的类】所具有的共同特性;对于这些类而言,接口内部的函数成员,反映了这群相似的个体都能够执行的共同行为。一旦一群不同的类继承了一个相同的接口,它们就必须实现接口中规定的所有共同行为;但是,每个类都能够以【个性化】的方式来执行这些行为。上面的定义有点难懂,到底是什么意思呢?举个例子看一下
2020-06-08 11:50:37 366
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人