找回密码
 注册帐号

扫一扫,访问微社区

暂存 Unity3D之游戏架构脚本该如何来写

20
回复
5066
查看
[ 复制链接 ]
排名
1
昨日变化

1619

主题

3696

帖子

1万

积分

Rank: 16

UID
2
好友
123
蛮牛币
6193
威望
121
注册时间
2013-5-19
在线时间
2359 小时
最后登录
2019-10-28

原创先锋

2014-6-25 11:14:26 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

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

1.jpg

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

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

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

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

编写脚本时请注意,脚本只干属于自己最重要的事情,就跟代码中的函数一样,只干最重要的事情。切记和该条脚本无关的事情不要去管,不要在脚本中做过多的相互连带工作,让所有连带工作的话都放在全局单例脚本中来做。
  这里我们举一个例子,主角砍怪或技能攻击怪,怪物受伤只到怪死亡以后屏幕播放一段胜利动画。
1.主角对象发动攻击,全局单例脚本接受按键事件后通知主角脚本播放攻击动画。
2.敌人对象接受到主角发送攻击消息时开始播放受伤动画,敌人脚本接收到主角的碰撞时询问单例脚本
主角是“普通攻击、还是技能攻击”,接着敌人播放对应的受伤动画,根据攻击类型敌人对象开始减血。
3.重复上面的操作,当敌人的血量《=0的时。敌人销毁自身对象,并且敌人脚本告诉单例脚本自己已经死亡。此时,单例脚本在调用“胜利动画”对象播放胜利动画效果。
上述逻辑我是完全按照刚刚图片中所说明的方式来写,这样做就可以很好的避免交互交互混乱的情况,其实开发中的所有类似这种交互的情况都能很好的用这个全局单例脚本来解决。希望广大Unity3D开发爱好者可以和我讨论,因为我知道架构设计没有最好只有更好。

unity3d 游戏;unity3d 脚本是什意思;unity3d 战斗架构;unity3d切换场景代码;unity3d 切换平台;unity3d与android交互;android调用unity3d接口;unity3d 场景切换效果;unity3d的游戏;unity3d 多人游戏;unity3d 策略游戏;哪些游戏是unity3d;unity3d重新开始游戏;游戏unity3d;哪里看unity3d游戏;unity3d如何加脚本;unity3d脚本有什么用;unity3d 脚本怎么使用;unity3d移动脚本;unity3d自带 脚本;unity3d转动脚本;unity3d 架构;unity3d 场景切换代码;unity3d 5.3切换平台;unity3d android交互;unity3d 调用android接口;unity3d 切换场景效果
回复

使用道具 举报

排名
1748
昨日变化

35

主题

328

帖子

1543

积分

Rank: 9Rank: 9Rank: 9

UID
54
好友
23
蛮牛币
3317
威望
30
注册时间
2013-5-29
在线时间
377 小时
最后登录
2020-5-12
QQ
2014-6-25 15:05:32 显示全部楼层
求手把手教学搭建U3D游戏脚本架构....看完了明白了点 但作为初学者来说还是很多地方没搞懂. 大神有空就做个浅显点的脚本架构教学吧,饥渴求学 感激不尽:loveliness:
回复 支持 反对

使用道具 举报

5熟悉之中
979/1000
排名
1853
昨日变化

3

主题

101

帖子

979

积分

Rank: 5Rank: 5

UID
163
好友
1
蛮牛币
2511
威望
0
注册时间
2013-6-1
在线时间
153 小时
最后登录
2019-5-8
QQ
2014-8-2 00:23:27 显示全部楼层
挺好的,希望以后能讲一些更深入的游戏架构,比如以一个简单RPG游戏为例。
回复 支持 反对

使用道具 举报

排名
1
昨日变化

101

主题

1170

帖子

9981

积分

Rank: 16

UID
49
好友
36
蛮牛币
14194
威望
999
注册时间
2013-5-28
在线时间
1488 小时
最后登录
2019-10-28

专栏作家蛮牛译员原创先锋活力之星原创精华达人论坛建议之星突出贡献奖财富之证最佳新人蛮牛哥VIP认证开发者游戏蛮牛QQ群会员

QQ
2014-8-2 09:19:21 显示全部楼层
Ace1989 发表于 2013-8-2 00:23
挺好的,希望以后能讲一些更深入的游戏架构,比如以一个简单RPG游戏为例。 ...

感谢建议,以后会有的
回复 支持 反对

使用道具 举报

排名
15911
昨日变化

0

主题

48

帖子

70

积分

Rank: 2Rank: 2

UID
793
好友
1
蛮牛币
138
威望
0
注册时间
2013-7-11
在线时间
20 小时
最后登录
2015-4-14
2014-8-7 14:19:33 显示全部楼层
游戏架构没个几年语言基础是写不出来的。。。当然不包括大神在内。。。
回复 支持 反对

使用道具 举报

排名
25425
昨日变化

0

主题

7

帖子

35

积分

Rank: 1

UID
2573
好友
0
蛮牛币
67
威望
0
注册时间
2013-8-25
在线时间
12 小时
最后登录
2019-5-16
2014-8-26 01:45:24 显示全部楼层
唉,需要学习一个编程的能力了
回复 支持 反对

使用道具 举报

7日久生情
1827/5000
排名
1101
昨日变化

6

主题

288

帖子

1827

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
880
好友
9
蛮牛币
1590
威望
10
注册时间
2013-7-15
在线时间
497 小时
最后登录
2020-7-11
2014-8-26 12:44:49 显示全部楼层
好贴--------------------------------------
回复 支持 反对

使用道具 举报

排名
48143
昨日变化

0

主题

1

帖子

19

积分

Rank: 1

UID
2716
好友
0
蛮牛币
16
威望
0
注册时间
2013-8-28
在线时间
1 小时
最后登录
2013-11-12
2014-8-28 09:33:15 显示全部楼层
很好.赞一个:lol
回复 支持 反对

使用道具 举报

6蛮牛粉丝
1027/1500
排名
3795
昨日变化

1

主题

491

帖子

1027

积分

Rank: 6Rank: 6Rank: 6

UID
2611
好友
16
蛮牛币
1810
威望
0
注册时间
2013-8-26
在线时间
133 小时
最后登录
2019-9-2
2014-9-3 17:25:20 显示全部楼层
{:94:}{:94:}{:94:}{:94:}{:94:}
回复

使用道具 举报

5熟悉之中
576/1000
排名
4799
昨日变化

6

主题

98

帖子

576

积分

Rank: 5Rank: 5

UID
1360
好友
2
蛮牛币
620
威望
0
注册时间
2013-8-1
在线时间
159 小时
最后登录
2019-10-23

游戏蛮牛QQ群会员活力之星

2014-9-9 18:36:33 显示全部楼层
一直在用单例脚本和池子~
回复 支持 反对

使用道具 举报

排名
22154
昨日变化

1

主题

23

帖子

36

积分

Rank: 1

UID
3342
好友
0
蛮牛币
116
威望
20
注册时间
2013-9-6
在线时间
12 小时
最后登录
2015-3-20
2014-9-13 18:04:04 显示全部楼层
单例脚本和全局脚本有什么区别?
回复 支持 反对

使用道具 举报

4四处流浪
384/500
排名
6684
昨日变化

2

主题

127

帖子

384

积分

Rank: 4

UID
3199
好友
2
蛮牛币
700
威望
0
注册时间
2013-9-4
在线时间
55 小时
最后登录
2015-4-22
2014-9-16 14:57:47 显示全部楼层
回复

使用道具 举报

7日久生情
2079/5000
排名
597
昨日变化

0

主题

458

帖子

2079

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
3744
好友
0
蛮牛币
4982
威望
0
注册时间
2013-9-12
在线时间
240 小时
最后登录
2016-5-20
2014-9-21 18:26:31 显示全部楼层
学习了。。
回复 支持 反对

使用道具 举报

7日久生情
2303/5000
排名
1507
昨日变化

2

主题

743

帖子

2303

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
3571
好友
36
蛮牛币
2193
威望
0
注册时间
2013-9-10
在线时间
612 小时
最后登录
2020-7-11
2014-9-26 09:29:52 显示全部楼层
求个简单实例
回复 支持 反对

使用道具 举报

5熟悉之中
947/1000
排名
2272
昨日变化

0

主题

124

帖子

947

积分

Rank: 5Rank: 5

UID
1009
好友
0
蛮牛币
1922
威望
0
注册时间
2013-7-19
在线时间
202 小时
最后登录
2015-7-29
2014-9-26 11:14:50 显示全部楼层
那个全局脚本和单例脚本有啥区别?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则