转载自:http://www.cnblogs.com/softimagewht/p/3916646.html

这篇文章MOMO主要想大家说明一下我在Unity3D游戏开发中是如何写游戏脚本的,对于Unity3D这套游戏引擎来说入门极快,可是要想做好却非常的难。这篇文章的目的是让哪些已经上手Unity3D游戏引擎的朋友学会如何更好的写游戏脚本,当然本文这紧紧是我这么多年对游戏开发的认知,你也可以有你自己的看法。首先我们看看游戏主要是由哪几部分组成的,如下图所示,任何平台下的任何游戏核心都是由:数据、逻辑、渲染三大部分组成。

当你写过》=2个平台下的游戏时你会发现其实游戏开发很“容易”,为什么“容易”呢?因为此时你会发现所有平台下开发游戏的模式,如下图中的“数据”与“逻辑”两部分真的是完全一样的,这两部分是与游戏开发平台无关的。然而真正与游戏平台有关的紧紧是“渲染”这部分,因为各个游戏平台下的渲染接口是不同的。这也就印证了一点,能把J2ME游戏写好的程序员就必然能把IOS或Android游戏同样的写好。读到这里请结合一下你的公司情况,你可能会发现在你的技术总监两三天就能上手Unity3D游戏开发 Cocos2d游戏开发,这并不是他对游戏平台研究的透彻,而是他对游戏数据的掌控能力非常强,所以能很快玩转各个平台下的开发。

如下图所示,Unity3D这套游戏引擎在游戏开发中的权重如图中所示。其中包含100%的渲染部分 +50%左右的逻辑部分。(因为Unity3D封装了很多与逻辑相关的API供开发者使用)

下面我们回到Unity3D脚本架构的编写上,我们知道Unity3D在是可以创建游戏场景的,在每个游戏场景中又可以创建游戏对象,把每个场景的游戏对象融合在一起就是一款3D游戏。游戏场景之间属于同等级的关系,为了让游戏场景之前交互我们需要有一个凌驾所有场景之上的脚本,我称之为“全局脚本”。如下图所示,所有场景都能与这个唯一的全局脚本进行交互。举个例子,当场景切换时可将临时逻辑数据写入全局脚本中,切换完毕后再去全局脚本中取之前保存的数据,从而实现交互。(当然还有别的办法也能实现这个效果,但是我觉得这样做会更好一些,数据会更安全一些)

接着我们就进入场景中,游戏场景是由若干游戏对象组成,下面我好好说一说游戏对象。游戏对象是需要绑定游戏脚本才能完成它的生命周期。那么脚本的使命就会尤其的重要。因为游戏对象比较多那么脚本必然会出现交互的情况,如下图所示,很多初期Unity3D的项目中的脚本会编写成这个样子。错综复杂相互交互,这样编写的脚本有可能你的游戏能做出来,可是你在维护的时候团队开发的时候你会发现你的脚本非常的混乱,别的同事想改都不知道怎么改。(显然这样的作法时完全错误的)

我们想想为什么脚本之间要交互,原因很简单。是因为脚本中需要使用/调用另一条脚本或者另一条脚本对应的游戏对象某一项数据/方法,为了解决这个问题而导致最终的脚本非常混乱。为了避免这个问题,我在开发中会这么做,如下图所示,脚本之间切记不要做直接的相互交互,脚本之间只做间接的交互。每一个游戏场景都有一个凌驾所有游戏对象之上的单例脚本,在这条脚本中保存场景中所有脚本的公共数据。包括该场景的整体逻辑更新都是在这条单例脚本中完成。每条脚本都只与这个单例脚本做交互,和别的脚本一概不交互。(间接交互)

编写脚本时请注意,脚本只干属于自己最重要的事情,就跟代码中的函数一样,只干最重要的事情。切记和该条脚本无关的事情不要去管,不要在脚本中做过多的相互连带工作,让所有连带工作的话都放在全局单例脚本中来做。

这里我们举一个例子,主角砍怪或技能攻击怪,怪物受伤只到怪死亡以后屏幕播放一段胜利动画。

1.主角对象发动攻击,全局单例脚本接受按键事件后通知主角脚本播放攻击动画。

2.敌人对象接受到主角发送攻击消息时开始播放受伤动画,敌人脚本接收到主角的碰撞时询问单例脚本 主角是“普通攻击、还是技能攻击”,接着敌人播放对应的受伤动画,根据攻击类型敌人对象开始减血。

3.重复上面的操作,当敌人的血量《=0的时。敌人销毁自身对象,并且敌人脚本告诉单例脚本自己已经死亡。此时,单例脚本在调用“胜利动画”对象播放胜利动画效果。

上述逻辑我是完全按照刚刚图片中所说明的方式来写,这样做就可以很好的避免交互交互混乱的情况,其实开发中的所有类似这种交互的情况都能很好的用这个全局单例脚本来解决。希望广大Unity3D开发爱好者可以和我讨论,因为我知道架构设计没有最好只有更好。嚯嚯!!

U3D 游戏引擎之游戏架构脚本该如何来写相关推荐

  1. Unity3D之游戏架构脚本该如何来写

    这篇文章主要想大家说明一下我在Unity3D游戏开发中是如何写游戏脚本的,对于Unity3D这套游戏引擎来说入门极快,可是要想做好却非常的难.这篇文章的目的是让哪些已经上手Unity3D游戏引擎的朋友 ...

  2. unity游戏开发毕设_《毕业设计(论文)-基于Unity游戏引擎的游戏设计》.doc

    学 号070125分类号本科生毕业论文(设计) 题目: 基于Unity游戏引擎的游戏设计 院(系) 电子与信息工程系专业 计算机科学与技术班级2007级学 生 姓 名指导教师(职称)提 交 时 间 二 ...

  3. 游戏引擎与游戏引擎开发入门

    早想写一点游戏设计的文章与大家交流,一是经验的问题,二是公司正在紧张的游戏制作期,实在抽不出多少时间,一直没有动手,今天忽然头脑发热,写了一段,以后准备陆续写一些游戏创意,策划,制作,流程管理,和制作 ...

  4. unity游戏引擎_Unity游戏引擎指南:如何开始使用最受欢迎的游戏引擎

    unity游戏引擎 Unity游戏开发 (Game Development with Unity) Unity is a cross-platform game engine developed by ...

  5. 手把手教你架构3d游戏引擎pdf_游戏开发中的算法

    游戏技术这条路,可深可浅.你可以满足于完成GamePlay玩法层面的东西,你也可以满足于架构和框架设计层面的东西,你也可以醉心于了解某一游戏引擎带来的掌控感.但是,我们不该止步于此,止步与目前所见或所 ...

  6. Android游戏引擎汇总,架构师花费近一年时间整理出来的安卓核心知识

    目前版本中还不支持Android x86 游戏例子:https://market.android.com/details?id=com.ArtInGames.AirAttackHDLite Cocos ...

  7. 游戏引擎是什么?游戏引擎的层级架构

    在游戏程式的领域中,最常听到的专有名词,可以说是非 Game Engine(游戏引擎)莫属了.听起来是个很炫很酷的名词,但其实游戏引擎一词经常被过度泛称与误用.所谓的游戏引擎架构,由低阶 (Low-L ...

  8. Games104 Lecture 2 游戏引擎的层级架构

    目录 游戏引擎层级介绍 1 Resource Layer 资源层 1.1 资源的获取和寻找 How to Access My Data 1.2 实时资产管理 Runtime Asset Manager ...

  9. 游戏引擎与游戏开发入门介绍

    转自:https://www.cnblogs.com/Renyi-Fan 最近由于工作原因,需要对游戏开发有一个初步但完整的了解.因为自己之前刚毕业的时候接触过一些cocos-quick的开发,因此对 ...

最新文章

  1. 神经网络基础:(3)神经网络整体架构
  2. Windows安装TensorFlow
  3. mongodb分片配置
  4. 为何被主流抛弃-江西IDC机房价格为何居高不下缺少竞争力-2014年5月江西IDC排行榜...
  5. 手机号码、获得当前时间,下拉框,填写限制
  6. tvar julia pca_景德镇品种多样PCA牛卡纸追求品质
  7. SAP Spartacus 自定义 PageResolver 的用法
  8. 搜索+回溯问题(DFS\BFS详解)
  9. python import 错误 TypeError: 'module' object is not callable
  10. 成都鸿蒙脱模剂厂家,现场体验荣耀智慧屏与鸿蒙OS,荣耀Life成都店与您共享锐科技...
  11. 一、Linear Regression
  12. protobuf vc2008编译
  13. UWA TIPS:让你的项目更懂你!
  14. c#编程指南(十二) 平台调用P-INVOKE完全掌握, 结构体边界对齐和内存布局
  15. 如何将文章列表用li分两列显示
  16. MFC控件之cimagelist,加载不上位图
  17. 微信小程序-appId, 真机调试,上线
  18. 惠普计算机进入安全模式,Windows10系统惠普电脑快速进入安全模式的方法
  19. 如何优化前端页面的LCP?
  20. 用python画钢铁侠图片_Photoshop快速把钢铁侠图片转为素描水墨风格教程

热门文章

  1. 很厉害的 SQL函数Group_concat用法,
  2. LCD、OLED、QLED、microLED,细说各种显示技术
  3. 甘肃敦煌戈壁滩108KM 挑战的感想
  4. Flutter ExpansionTile 折叠组件的使用
  5. Python基础教程目录
  6. 从西天取经的九九八十一难来看Java设计模式:模板方法模式
  7. 富途证券面经(一面挂)
  8. python随机生成licence plate numer
  9. 我该怎样维系这段感情呢
  10. 知乎万赞:什么样的程序员在35岁以后依然被公司抢着要?打破程序员“中年危机”