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

李錦俊(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ì)

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 373302
  • 排名 - 67

最新評論

閱讀排行榜

評論排行榜

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

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

簡單分析下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包對象在GObjObjects中的唯一索引,相當(dāng)于Outer->Index
Outer,這個(gè)對象所屬的包
ObjectFlags,這個(gè)對象的一些標(biāo)記,具體參見EObjectFlags枚舉,不同標(biāo)記來決定這個(gè)對象的一些行為,比如是否可以保存、是否可見等等
Name,對象名稱,通過一個(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í)會一次性初始化,意味著即使創(chuàng)建多少個(gè)UObject,但Class只會有一個(gè)實(shí)例,我們通過這個(gè)類,可以使用TFieldIterator的統(tǒng)一方式來遍歷這個(gè)類的所有屬性、函數(shù)。

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

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


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

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




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

Feedback

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

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

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

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

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

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

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

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲一区二区三区在线| 国产精品成人免费精品自在线观看| 麻豆成人在线| 久久国产欧美| 蜜桃伊人久久| 亚洲国产精品一区在线观看不卡| 免费看精品久久片| 亚洲激情第一页| 亚洲午夜在线视频| 久久精品久久综合| 欧美国产日韩精品免费观看| 欧美午夜免费| 伊伊综合在线| 中日韩高清电影网| 久久久久国产免费免费| 亚洲高清影视| 欧美在线视频观看免费网站| 免费视频一区| 国产精品一二三四| 亚洲精品四区| 久久久久久综合| 亚洲免费成人| 久久天堂精品| 国产麻豆精品theporn| 亚洲高清在线观看一区| 亚洲综合视频一区| 欧美成人免费大片| 亚洲欧美久久久| 欧美伦理在线观看| 伊人精品在线| 欧美在线观看网站| 亚洲国产第一| 欧美在线地址| 国产精品国色综合久久| 亚洲黄网站在线观看| 欧美一区二区三区免费大片| 亚洲欧洲在线视频| 久久亚洲精选| 国产一区二区三区四区在线观看| 一区二区三区精品在线| 欧美成人网在线| 久久av在线看| 国产一区二区三区高清播放| 亚洲欧美区自拍先锋| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲自拍啪啪| 国产精品综合久久久| 一区二区三区.www| 亚洲欧洲一区二区天堂久久| 欧美在线一区二区三区| 欧美日本在线播放| 亚洲国产成人tv| 久热精品在线| 午夜精品久久久久久| 国产精品成人va在线观看| 99精品免费网| 亚洲人成网站精品片在线观看| 久久久999国产| 国产在线乱码一区二区三区| 久久se精品一区精品二区| 亚洲午夜在线观看| 国产精品人人做人人爽| 性久久久久久久久| 午夜精品福利一区二区三区av| 国产精品素人视频| 久久精品99久久香蕉国产色戒| 亚洲欧美日本日韩| 激情五月婷婷综合| 免费欧美日韩国产三级电影| 久久理论片午夜琪琪电影网| 亚洲国产精品悠悠久久琪琪| 亚洲盗摄视频| 葵司免费一区二区三区四区五区| 亚洲永久网站| 在线精品亚洲| 亚洲精品视频在线| 国产精品美女久久福利网站| 久久精品视频一| 久久一二三区| 夜夜嗨av一区二区三区四季av | 国产美女一区二区| 久久免费视频这里只有精品| 久久久久国产精品一区| 亚洲精品在线免费| 亚洲最新在线视频| 国产色综合久久| 亚洲第一福利在线观看| 欧美日韩在线视频一区| 久久精品30| 欧美了一区在线观看| 欧美一区二区国产| 老司机精品导航| 亚洲一区二区在线播放| 欧美在线精品一区| 亚洲精品色婷婷福利天堂| 一区二区三区成人| 狠狠色综合色区| 亚洲精品小视频| 亚洲欧美三级在线| 在线精品视频一区二区三四| 日韩网站在线| 精品二区视频| 亚洲午夜久久久久久尤物| 亚洲高清在线| 亚洲男同1069视频| 日韩视频免费| 久久精品视频在线免费观看| 亚洲专区一区| 亚洲激情小视频| 蜜臀a∨国产成人精品| 欧美日韩专区| 欧美成人一区在线| 国产欧美日韩另类一区 | 一区二区三区久久网| 性欧美精品高清| 亚洲视频欧美视频| 欧美国产日韩二区| 欧美成人官网二区| 国产视频不卡| 亚洲一区二区三区四区视频| 亚洲最新视频在线| 欧美成人福利视频| 欧美顶级大胆免费视频| 国产在线观看一区| 午夜久久久久| 欧美中文字幕不卡| 国产精品欧美一区喷水| 宅男噜噜噜66国产日韩在线观看| 亚洲精品美女免费| 老色鬼久久亚洲一区二区| 老色鬼精品视频在线观看播放| 国产麻豆日韩欧美久久| 亚洲在线观看| 欧美一级精品大片| 国产精品劲爆视频| 亚洲字幕一区二区| 欧美中文字幕第一页| 国产亚洲视频在线| 欧美一区二区福利在线| 久久精品国产99国产精品| 国产日韩欧美三级| 亚洲欧美不卡| 欧美自拍丝袜亚洲| 国产一区二区高清| 久久精品视频播放| 欧美波霸影院| 99精品久久久| 国产精品久久久久久妇女6080| 亚洲午夜精品一区二区| 欧美一级在线播放| 韩国av一区二区| 免费在线亚洲| 日韩视频专区| 久久福利资源站| 在线电影国产精品| 欧美国内亚洲| 亚洲一区精品电影| 久久影院午夜片一区| 亚洲人成在线免费观看| 欧美日韩黄色一区二区| 亚洲综合国产| 欧美成人国产一区二区| 一区二区av| 国产三级精品在线不卡| 美女视频一区免费观看| 一区二区欧美在线| 久久一区二区三区四区五区| 亚洲精品视频在线看| 国产精品一区二区男女羞羞无遮挡| 欧美亚洲在线播放| 亚洲国产成人精品女人久久久| 亚洲综合视频一区| 亚洲激情在线播放| 国产精品女人毛片| 免费观看在线综合| 羞羞漫画18久久大片| 制服丝袜亚洲播放| 欧美资源在线| 99re6这里只有精品| 久久视频一区| 在线综合亚洲| 亚洲国产导航| 国产伦精品一区二区三区高清| 久久亚洲图片| 亚洲免费视频成人| 日韩视频一区二区三区| 久久一区欧美| 午夜精品亚洲| 99热这里只有精品8| 在线播放亚洲| 国产一区二区高清不卡| 国产精品vvv| 欧美精品一区二区三区四区| 久久成人免费电影| 亚洲免费中文字幕| 亚洲网站在线| 亚洲午夜精品久久久久久app| 亚洲精品国产精品乱码不99| 欧美大片免费久久精品三p| 久久精品视频免费|