查看: 7344|回复: 7

Unity3D类分析——全局的类分析

[复制链接]

12

主题

2

听众

231

积分

设计实习生

Rank: 2

纳金币
208
精华
0

最佳新人

发表于 2013-1-4 17:51:15 |显示全部楼层
今天 开始了另一种模式的学习,那就是学习unity3d脚本中的类。纵观整个Unity3D的脚本我们可以将其分为两中类型:运行时类和编辑器类。(由于编辑器类到目前只是实验了一些功能,所以不敢多说,这里就只是分析运行时类了。)
运行时类的意思就是说在运行时调用的方法(呵呵,我自己的理解)对比的是静态的,固定的等等。这种类允许我们在程序运行时做一些事情,比如Camera的属性设置,我们可以在我们的程序运行过程中调节,而不用一定要在游戏开发的时候设置好。对对Unity3D中的类进行分析有助于我们更好的理解Unity3D是怎么样的一种引擎,以及它的结构更清晰等等。所以,让我们开始Unity3D的类分析吧~在类分析的过程中,我们会发现,有的类会对应着一个或者多个组件,不妨我们也捎带着了解一下这些组件。另外,我们对于类的认识深度设置为方法和属性这样一个深度,再往基础走的话,就只是贴出一些连接,我自己的学习或者网络上讲解的很清晰的文章。谈到类就不得不说一些关于类的特向,比如面向对象,类继承,多态,这些概念是你必须懂得,不然做一个不懂基本概念的程序员是很痛苦的事情,(只有你知道了,才知道学习起来不那么费力的原因),建议先打好变成基础在来学习这样高级的应用。(当然,也可以直接学习,基础慢慢的补上,因人而异)。好吧,我们先来认识一些特殊类1. Object 类  几乎在较为成熟的语言框架里都会有这样一个类,比如在Java里面也是Object作为基类,还有安卓的SDK中,Unity里面解释为 所有Unity中的基类。这样一个基类的作用非常重要,我们看Unity3d 里面用它来做什么?



也是定义了一些方法和属性,然而,这些属性却是每一个在Unity3d 厘米都要用到的属性,比如ToString()(将其字符化,网络中传输的必须工具),所以,发挥了面向对象的作用,利用继承将所有属于他的子类都有了这些公共属性,而不必一个一个的写上去。值得一提的是,在Debug中(调试专用)
的参数书Object 这就表明,你所有的对象都可以拿来输出,不必参加转换后再输出,方便的很啊~当然,这里还有其他的方法,比如再介绍一个: 就是 ==  和!= 的重写。这样,每个Object 类型的对象就可以参与比较了。这就是Object类的解释,其他的属性,可参考圣典里面的了。http://game.ceeger.com/Script/Object/Object.html2.  Component 类 是组件类,继承自Object 类 正如帮助文档上说的 Base class for everything attached to GameObjects. (每一个绑定到游戏对象上的东西的基础类)又一个基础类,但是缩小了范围:组件的基础类。所以,我们相信,所有的组件(包括你写的脚本组件)中的一些公用的方法都在这个里面了。
首先,我们将眼睛定睛在属性上,我们看到 上面的是 The someComponent attached to this GameObject .意思很简单,当我们在某一个游戏对象上附着了一个组件的时候,其实他已经有了该组件的对象了。比如:Camera 我们创建一个空的游戏对象,添加一个脚本:Test.cs添加简单一行代码:Rect r=camera.rect; 就会报错:
但是,我们给这个对象添加了 Camera组件后就不会报错了。所以,有组件,就有了一个对应组件的对象!其他的组件也是一样的。再看方法:都是字面意思,获取组件,获取其他物体的组件等等。具体请参考 http://game.ceeger.com/Script/Component/Component.html(唉,绝对没受广告费,人家做的不错,咱得分享啊)3. GameObject 类 继承自Object类 游戏对象类   属性和方法如图:
在他的属性里面,我们也能看到很多组件的对象,这个和Component类里面的区别是什么呢?其实是一个意思。我们思考一下,组件是为了访问每一个组件设置的,所以他有每一个组件来访问,而组件的宿主是什么呢? 就是GameObject! 所以,这里是一样的。当我们访问到了这个游戏对象,也就可以访问它的每个组件了。有一个构造函数(这里解释)。帮助我们在脚本中创建游戏对象。方法的具体功能,可以参考这里 http://game.ceeger.com/Script/GameObject/GameObject.html这里还有一个要提的就是 第三个 类方法。类方法就是可以使用类来访问的方法而不必使用对象访问,我们来看一个案例: static function Find (name : String) : GameObject没错 就是static导致的 成为了这个类的全局方法,但是这样的方法也是有一定的局限性的,比如静态方法的特殊性导致它只能被静态方法所使用。(内存分配方式不同的原因)好吧今天就分享这些吧。接下来分享:Camera类Mesh类Mathf类
回复

使用道具 举报

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

发表于 2013-1-4 23:00:36 |显示全部楼层
这个分析很不错,虽然还是不太理解用途,,
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
回复

使用道具 举报

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

发表于 2013-1-7 08:25:46 |显示全部楼层
  欢迎多多分享~~
回复

使用道具 举报

25

主题

5

听众

358

积分

设计实习生

Rank: 2

纳金币
300
精华
0

最佳新人

发表于 2013-1-7 17:49:45 |显示全部楼层
不错,学习了。欢迎多多分享~~。
回复

使用道具 举报

Sora    

0

主题

1

听众

86

积分

设计初学者

Rank: 1

纳金币
4
精华
0

活跃会员 灌水之王

发表于 2013-1-15 19:34:41 |显示全部楼层
概念學習了 ! 感謝分享 ~
回复

使用道具 举报

12

主题

2

听众

657

积分

初级设计师

Rank: 3Rank: 3

纳金币
0
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

发表于 2013-1-18 19:25:56 |显示全部楼层
我靠,孩子又哭了,还没来得及学习个啥呢
回复

使用道具 举报

0

主题

1

听众

103

积分

设计实习生

Rank: 2

纳金币
107
精华
0

最佳新人

发表于 2013-1-24 13:44:40 |显示全部楼层
学习,谢谢,值得一看的。
回复

使用道具 举报

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

发表于 2013-1-27 04:13:52 |显示全部楼层
继续学习中,希望看到更详细的资料
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-3-29 20:37 , Processed in 0.148480 second(s), 34 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部