青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

李錦俊(mybios)的blog

游戲開發(fā) C++ Cocos2d-x OpenGL DirectX 數(shù)學(xué) 計(jì)算機(jī)圖形學(xué) SQL Server

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  86 Posts :: 0 Stories :: 370 Comments :: 0 Trackbacks

公告

QQ:30743734
EMain:mybios@qq.com

常用鏈接

留言簿(16)

我參與的團(tuán)隊(duì)

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 373516
  • 排名 - 67

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

Unreal3(以下簡(jiǎn)稱U3)是一個(gè)以腳本為主體的游戲引擎,所有代碼幾乎都為腳本服務(wù),意味著所有源碼都會(huì)提供相應(yīng)的腳本函數(shù)在腳本中使用。
UObject是U3中很重要的一個(gè)基類,所有由UObject派生的類都可以導(dǎo)出到腳本中(不從UObject派生行不行?不知道呢),但我對(duì)U3的腳本不熟。暫且從C++角度來分析下UObject是如何實(shí)現(xiàn)的。
UObject顧名思義是一個(gè)“基本對(duì)象”,材質(zhì)、mesh、文件、玩家等等都是從這個(gè)UObject繼承而來,這個(gè)類做了很多事情:

1、屬性的統(tǒng)一訪問接口,腳本中就可以通過這個(gè)接口來訪問屬性了;
2、成員函數(shù)的統(tǒng)一訪問接口,腳本中可以通過這些接口來調(diào)用UObject或其派生類的成員函數(shù);
3、串行化的統(tǒng)一接口,實(shí)現(xiàn)了一個(gè)保存所有對(duì)象的UPackage包管理器,從而做到保存到二進(jìn)制文件、從二進(jìn)制文件讀取,這樣做的好處是持久化對(duì)象(比如游戲中的材質(zhì)列表)的載入非常快速,由于是二進(jìn)制格式,不需要任何字符串?dāng)?shù)據(jù)轉(zhuǎn)換;
4、提供對(duì)象的垃圾回收功能;
5、提供編輯器的相應(yīng)功能,如:對(duì)象的“屬性”有各種編輯器所需的標(biāo)記(是否可編輯CPF_Edit等)、對(duì)象在編輯器中的渲染DrawThumbnail、對(duì)象描述GetThumbnailDesc、對(duì)象選擇IsSelected、是否更改了包MarkPackageDirty等等;
6、提供一個(gè)對(duì)象的管理器,這個(gè)對(duì)象管理器是通過UObject中的一堆靜態(tài)函數(shù)來實(shí)現(xiàn)的,如:從管理器中查找一個(gè)對(duì)象StaticFindObject、分配一個(gè)對(duì)象StaticAllocateObject、從包中載入一個(gè)對(duì)象StaticLoadObject、根據(jù)類型來遍歷管理器中的所有對(duì)象FObjectIterator/TObjectIterator、遍歷所有選擇了的對(duì)象TSelectedObjectIterator(編輯器使用)
7、提供配置管理器,通過UObject中的LoadConfig、SaveConfig實(shí)現(xiàn)
8、提供類描述信息,描述了這個(gè)類從哪個(gè)類派生、有什么屬性、每個(gè)屬性的訪問方式、有什么函數(shù),從而實(shí)現(xiàn)了動(dòng)態(tài)類型判斷、腳本屬性訪問、腳本函數(shù)訪問、屬性串行化等等
9、其他。。。。

簡(jiǎn)單分析下UObject中的各個(gè)成員變量的意義:
Index,用來記錄這個(gè)UObject在所有UObject列表GObjObjects中的唯一索引
HashNext,用來記錄全局UObject Hash表GObjHash中跟這個(gè)UObject 的Hash值相同的下一個(gè)UObject的指針,用來配合全局Hash表GObjHash通過StaticFindObject函數(shù)快速搜索一個(gè)指定名稱的UObject
StateFrame,腳本相關(guān)的咚咚,還沒看
_Linker,通過在包文件中載入時(shí)的載入器
_LinkerIndex,通過包文件載入時(shí)的UPackage包對(duì)象在GObjObjects中的唯一索引,相當(dāng)于Outer->Index
Outer,這個(gè)對(duì)象所屬的包
ObjectFlags,這個(gè)對(duì)象的一些標(biāo)記,具體參見EObjectFlags枚舉,不同標(biāo)記來決定這個(gè)對(duì)象的一些行為,比如是否可以保存、是否可見等等
Name,對(duì)象名稱,通過一個(gè)FName來實(shí)現(xiàn),這個(gè)FName可是個(gè)好東西哦,字符串比較變成了一個(gè)Hash值比較
Class,用來描述這個(gè)類,就是以上第1、2、8點(diǎn)說到的。這個(gè)Class在調(diào)用UObject::StaticClass或派生類的StaticClass靜態(tài)函數(shù)時(shí)會(huì)一次性初始化,意味著即使創(chuàng)建多少個(gè)UObject,但Class只會(huì)有一個(gè)實(shí)例,我們通過這個(gè)類,可以使用TFieldIterator的統(tǒng)一方式來遍歷這個(gè)類的所有屬性、函數(shù)。

UObject的靜態(tài)變量,這些靜態(tài)變量其實(shí)就是UObject對(duì)象管理器使用的變量,如果用Ogre的設(shè)計(jì)方法來做,就相當(dāng)于另外一個(gè)class UObjectManager : public Singleton<UObjectManager>,然后在里面把這些靜態(tài)變量拿到UObjectManager中去。簡(jiǎn)要分析下靜態(tài)變量的意義:
GObjInitialized,對(duì)象管理器是否已經(jīng)初始化,全局對(duì)象管理器只需要初始化一次就夠了;
GObjNoRegister,調(diào)用StaticInit時(shí)會(huì)設(shè)置成1;
GObjBeginLoadCount,有多少個(gè)對(duì)象被BeginLoad了;
GObjRegisterCount,ProcessRegistrants中使用
GImportCount,還沒細(xì)看哦
GObjHash,通過每個(gè)UObject的Name的Hash值取低12位作為索引值保存在GObjHash表中,Hash值的低12位相同的,只記錄第一個(gè)在GObjHash表中,其他的通過鏈表方式使用UObject的HashNext來鏈接起來
GAutoRegister,自動(dòng)注冊(cè)的對(duì)象列表
GObjRoot,對(duì)象樹種的頂層對(duì)象
GObjObjects,所有對(duì)象的列表

先說這么多了,繼續(xù)學(xué)習(xí)。


如果本文對(duì)你的開發(fā)有所幫助,并且你手頭恰好有零錢。

不如打賞我一杯咖啡,鼓勵(lì)我繼續(xù)分享優(yōu)秀的文章。




posted on 2009-07-26 09:50 李錦俊(mybios) 閱讀(6513) 評(píng)論(8)  編輯 收藏 引用 所屬分類: 3D引擎開發(fā)

Feedback

# re: Unreal3游戲引擎UObject源碼閱讀分析 2009-07-26 10:55 herb
源碼公布了? 那里可以下到?   回復(fù)  更多評(píng)論
  

# re: Unreal3游戲引擎UObject源碼閱讀分析 2009-07-26 10:59 李錦俊
@herb
U3的源碼不是我等凡人能公布的,不過網(wǎng)上確實(shí)有源碼下載。在
http://www.ogredev.com/read-htm-tid-841.html  回復(fù)  更多評(píng)論
  

# re: Unreal3游戲引擎UObject源碼閱讀分析 2009-08-24 01:12 王清
又是腳本
垃圾  回復(fù)  更多評(píng)論
  

# re: Unreal3游戲引擎UObject源碼閱讀分析 2009-09-12 14:41 過路人
垃圾  回復(fù)  更多評(píng)論
  

# re: Unreal3游戲引擎UObject源碼閱讀分析 2010-05-11 15:26 小時(shí)候可靚了
這不是垃圾,至少我們可以學(xué)到引出腳本接口的方法。。  回復(fù)  更多評(píng)論
  

# re: Unreal3游戲引擎UObject源碼閱讀分析 2010-08-10 21:57 你是傻蛋
閑的,研究腳本.  回復(fù)  更多評(píng)論
  

# re: Unreal3游戲引擎UObject源碼閱讀分析 2010-08-10 21:59 你是傻蛋
腳本只相當(dāng)于接口文件,最多也就用來和GFX交互.真正的源碼還是C++.
研究腳本純屬浪費(fèi)時(shí)間  回復(fù)  更多評(píng)論
  

# re: Unreal3游戲引擎UObject源碼閱讀分析[未登錄] 2011-07-02 23:57 bird
分析的就是unreal的C++的unObjbas.h.所以樓上的誤解了  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            噜噜噜久久亚洲精品国产品小说| 一区二区三区蜜桃网| 欧美日韩成人一区二区| 欧美在线在线| 亚洲欧美日韩在线观看a三区| 99视频国产精品免费观看| 亚洲免费精品| 亚洲五月婷婷| 久久精品毛片| 免费观看成人| 欧美视频三区在线播放| 国产精品久久久久91| 国产亚洲欧美一区二区| 亚洲福利视频二区| 一本综合精品| 小黄鸭精品密入口导航| 久久久久久久国产| 亚洲欧洲精品一区二区三区| 最新精品在线| 午夜精品久久久久久久99樱桃 | 欧美亚洲网站| 鲁鲁狠狠狠7777一区二区| 亚洲国产成人av好男人在线观看| 在线中文字幕一区| 久久久亚洲人| 国产精品亚洲视频| 亚洲韩国日本中文字幕| 亚洲无亚洲人成网站77777 | 日韩视频不卡中文| 久久精品夜夜夜夜久久| 欧美激情欧美激情在线五月| 国产精品成人一区二区三区吃奶| 一区在线视频| 欧美激情亚洲综合一区| 中文亚洲视频在线| 亚洲第一页中文字幕| 亚洲国产综合91精品麻豆| 99re热这里只有精品视频| 午夜精品福利在线观看| 欧美精品久久久久久久免费观看| 国产精品系列在线播放| 亚洲精品在线视频| 久久婷婷一区| 亚洲一区区二区| 欧美日韩另类国产亚洲欧美一级| 加勒比av一区二区| 性伦欧美刺激片在线观看| 91久久久久久久久| 久久综合色一综合色88| 国产一级揄自揄精品视频| 久久国产精品99国产| 国产精品五月天| 亚洲一区在线看| 亚洲精品乱码久久久久久久久| 久久精品国产99精品国产亚洲性色 | 9久草视频在线视频精品| 久久综合久色欧美综合狠狠 | 裸体素人女欧美日韩| 国产午夜亚洲精品羞羞网站 | 亚洲高清激情| 久久久久国色av免费观看性色| 国产精品99一区二区| 日韩一级大片在线| 亚洲成人在线视频网站| 久久久精品性| 亚洲成人在线观看视频| 毛片av中文字幕一区二区| 久久精品国产精品| 在线看国产日韩| 裸体女人亚洲精品一区| 性色av一区二区三区红粉影视| 欧美午夜视频一区二区| 亚洲一区免费看| 亚洲午夜小视频| 国产精品三级视频| 久久久精品动漫| 久久久久在线观看| 揄拍成人国产精品视频| 久久一二三国产| 久热精品视频| 99热免费精品| 亚洲天堂成人| 极品尤物久久久av免费看| 欧美h视频在线| 欧美69视频| 亚洲另类在线一区| 亚洲一区二区三区精品在线观看| 国产精品欧美日韩一区| 欧美一区午夜视频在线观看| 欧美一区二区三区成人| 亚洲国产天堂久久综合| 在线亚洲电影| 黄网站色欧美视频| 亚洲激情专区| 国产精品jvid在线观看蜜臀| 欧美一级理论片| 免费影视亚洲| 午夜激情综合网| 久久五月激情| 亚洲欧美综合一区| 欧美女人交a| 免费日韩av片| 国产精品午夜久久| 亚洲国产欧美另类丝袜| 国产日韩专区| 最新日韩在线| 精品9999| 亚洲视频在线播放| 玖玖玖国产精品| 一区二区三区蜜桃网| 午夜亚洲精品| 亚洲天堂av在线免费观看| 久久色中文字幕| 欧美一区二区三区成人| 欧美国产日韩在线| 男女精品网站| 国产一区二区三区在线播放免费观看| 亚洲人成网站在线播| 激情成人av| 亚洲神马久久| 日韩一二三在线视频播| 免费成人av在线看| 久久一区欧美| 欧美日韩一级黄| 久久国产欧美精品| 国产精品高潮在线| 日韩午夜免费| 9久re热视频在线精品| 免费永久网站黄欧美| 免费欧美日韩国产三级电影| 国内激情久久| 欧美一区二区视频免费观看| 欧美一级日韩一级| 国产精品一区二区三区成人| 夜色激情一区二区| 欧美激情第一页xxx| 午夜精品理论片| 国产精品国产自产拍高清av| 亚洲麻豆国产自偷在线| 在线视频欧美一区| 国产精品高潮在线| 香蕉久久夜色| 久久在线免费| 在线精品亚洲| 欧美激情视频一区二区三区免费| 亚洲高清毛片| 一区二区免费看| 国产精品久久久久久久久果冻传媒| 亚洲免费电影在线观看| 亚洲综合成人婷婷小说| 国产欧美精品在线| 久久国产精品久久w女人spa| 久久视频免费观看| 亚洲黄色在线看| 国产精品国产三级国产a| 亚洲一区二区三区777| 欧美在线观看网址综合| 国产一区二区日韩精品| 久久综合九色综合欧美就去吻 | 欧美视频福利| 亚洲欧美日本伦理| 久久久精品视频成人| 在线观看视频免费一区二区三区| 噜噜噜91成人网| 日韩午夜电影av| 欧美一区91| 国内精品久久久久久影视8| 久久精品人人做人人爽| 亚洲观看高清完整版在线观看| 中文一区二区| 影音欧美亚洲| 国产精品久久国产精品99gif| 香蕉久久精品日日躁夜夜躁| 亚洲国产精品t66y| 美日韩在线观看| 欧美刺激午夜性久久久久久久| 激情成人av| 欧美日韩在线播放| 久久久久久久综合| 一本色道久久88综合亚洲精品ⅰ| 久久国产婷婷国产香蕉| 日韩视频在线免费| 国产一区二区三区高清在线观看| 蜜臀久久99精品久久久久久9 | 午夜欧美大尺度福利影院在线看| 久久综合五月天婷婷伊人| 一区二区三区日韩精品| 国产一区日韩欧美| 欧美视频在线视频| 久色成人在线| 欧美中文字幕不卡| 99国产精品久久久久久久久久| 亚洲免费视频观看| 亚洲国产精品精华液网站| 国产精品一区二区你懂得| 欧美精品少妇一区二区三区| 久久久久国产成人精品亚洲午夜| 一本大道久久精品懂色aⅴ| 欧美激情一区二区三区在线视频观看| 欧美在线一二三区|