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

李錦俊(mybios)的blog

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

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

公告

QQ:30743734
EMain:mybios@qq.com

常用鏈接

留言簿(16)

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

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 373515
  • 排名 - 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++角度來(lái)分析下UObject是如何實(shí)現(xiàn)的。
UObject顧名思義是一個(gè)“基本對(duì)象”,材質(zhì)、mesh、文件、玩家等等都是從這個(gè)UObject繼承而來(lái),這個(gè)類做了很多事情:

1、屬性的統(tǒng)一訪問(wèn)接口,腳本中就可以通過(guò)這個(gè)接口來(lái)訪問(wèn)屬性了;
2、成員函數(shù)的統(tǒng)一訪問(wèn)接口,腳本中可以通過(guò)這些接口來(lái)調(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ì)象管理器是通過(guò)UObject中的一堆靜態(tài)函數(shù)來(lái)實(shí)現(xiàn)的,如:從管理器中查找一個(gè)對(duì)象StaticFindObject、分配一個(gè)對(duì)象StaticAllocateObject、從包中載入一個(gè)對(duì)象StaticLoadObject、根據(jù)類型來(lái)遍歷管理器中的所有對(duì)象FObjectIterator/TObjectIterator、遍歷所有選擇了的對(duì)象TSelectedObjectIterator(編輯器使用)
7、提供配置管理器,通過(guò)UObject中的LoadConfig、SaveConfig實(shí)現(xiàn)
8、提供類描述信息,描述了這個(gè)類從哪個(gè)類派生、有什么屬性、每個(gè)屬性的訪問(wèn)方式、有什么函數(shù),從而實(shí)現(xiàn)了動(dòng)態(tài)類型判斷、腳本屬性訪問(wèn)、腳本函數(shù)訪問(wèn)、屬性串行化等等
9、其他。。。。

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

UObject的靜態(tài)變量,這些靜態(tài)變量其實(shí)就是UObject對(duì)象管理器使用的變量,如果用Ogre的設(shè)計(jì)方法來(lái)做,就相當(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,還沒(méi)細(xì)看哦
GObjHash,通過(guò)每個(gè)UObject的Name的Hash值取低12位作為索引值保存在GObjHash表中,Hash值的低12位相同的,只記錄第一個(gè)在GObjHash表中,其他的通過(guò)鏈表方式使用UObject的HashNext來(lái)鏈接起來(lái)
GAutoRegister,自動(dòng)注冊(cè)的對(duì)象列表
GObjRoot,對(duì)象樹(shù)種的頂層對(duì)象
GObjObjects,所有對(duì)象的列表

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


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

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




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

Feedback

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

# re: Unreal3游戲引擎UObject源碼閱讀分析 2009-07-26 10:59 李錦俊
@herb
U3的源碼不是我等凡人能公布的,不過(guò)網(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 過(guò)路人
垃圾  回復(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)于接口文件,最多也就用來(lái)和GFX交互.真正的源碼還是C++.
研究腳本純屬浪費(fèi)時(shí)間  回復(fù)  更多評(píng)論
  

# re: Unreal3游戲引擎UObject源碼閱讀分析[未登錄](méi) 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ⅴ视频| 亚洲国产成人tv| 夜夜躁日日躁狠狠久久88av| 亚洲一级电影| 久久天天综合| 欧美日精品一区视频| 国产精品国产自产拍高清av王其| 国产精品美女xx| 亚洲国产精品va在线观看黑人| 999亚洲国产精| 久久久久九九九| 亚洲精品日产精品乱码不卡| 午夜一区二区三视频在线观看 | 亚洲男人的天堂在线aⅴ视频| 欧美一区91| 欧美激情亚洲另类| 亚洲影视九九影院在线观看| 久久久久久久综合狠狠综合| 欧美日韩国产另类不卡| 国产一区二区高清不卡| 亚洲精品综合精品自拍| 久久成人资源| 亚洲精品视频免费观看| 久久av免费一区| 欧美三级电影精品| 亚洲高清在线播放| 欧美专区在线观看一区| 亚洲精品在线免费观看视频| 久久精品99| 国产精品夜夜嗨| 一道本一区二区| 农夫在线精品视频免费观看| 亚洲视频免费| 欧美日韩国产不卡在线看| 国内偷自视频区视频综合| 亚洲精品中文字幕在线观看| 久久人人97超碰精品888| 亚洲视频在线视频| 欧美人妖另类| 亚洲精品网站在线播放gif| 久久综合一区| 久久国产婷婷国产香蕉| 国产精品久久久一区二区| 日韩亚洲欧美中文三级| 欧美大胆a视频| 久久久蜜臀国产一区二区| 国产综合自拍| 久久久久久夜| 久久成人18免费网站| 亚洲三级影院| 亚洲人成欧美中文字幕| 久久蜜桃香蕉精品一区二区三区| 国产精品中文在线| 亚洲一区在线免费| 亚洲视频在线观看网站| 国产精品久久久久久久久免费樱桃| 洋洋av久久久久久久一区| 亚洲欧洲精品一区二区三区波多野1战4 | 国产精品大片| 亚洲小说欧美另类社区| 亚洲美女诱惑| 欧美日韩你懂的| 亚洲一区二区三区视频| 99热这里只有成人精品国产| 欧美吻胸吃奶大尺度电影| 亚洲欧美日韩国产综合精品二区| 中国av一区| 国产综合第一页| 欧美成人精品高清在线播放| 蜜臀91精品一区二区三区| 99热在这里有精品免费| 洋洋av久久久久久久一区| 国产精品福利影院| 久久精品av麻豆的观看方式| 久久不见久久见免费视频1| 在线日韩成人| 亚洲日本免费| 国产精品一区在线观看| 久久亚洲春色中文字幕| 另类国产ts人妖高潮视频| 日韩一级大片在线| 亚洲欧美国产77777| 一区在线播放视频| 亚洲另类视频| 国模叶桐国产精品一区| 欧美成人精品在线视频| 欧美日产国产成人免费图片| 欧美一区二区三区播放老司机| 久久精品盗摄| 亚洲视频在线免费观看| 久久国产一区| 亚洲欧美日韩天堂| 老司机精品久久| 亚洲欧美网站| 欧美大片在线看| 欧美中文字幕久久| 欧美精品久久久久久久久老牛影院 | 久久综合一区二区三区| 欧美日韩国产二区| 麻豆成人在线| 国产精品久久福利| 亚洲高清自拍| 一区在线播放| 亚洲字幕一区二区| 你懂的国产精品永久在线| 欧美视频在线视频| 欧美高清视频在线播放| 国产精品永久| 亚洲精品一区久久久久久| 国产一区二区在线观看免费| 亚洲精品永久免费| 在线观看的日韩av| 亚洲欧美日韩专区| 亚洲在线成人精品| 欧美理论在线| 亚洲国产精品99久久久久久久久| 国产在线不卡| 午夜精品免费视频| 午夜精品免费| 国产精品久久久久免费a∨| 亚洲精品欧美在线| 亚洲美女网站| 欧美韩日一区| 亚洲激情成人在线| 亚洲肉体裸体xxxx137| 蜜桃久久精品乱码一区二区| 欧美成年人网| 最近中文字幕mv在线一区二区三区四区| 久久电影一区| 麻豆成人91精品二区三区| 一区福利视频| 欧美不卡视频一区| 亚洲国产成人tv| 一区二区免费在线视频| 欧美日韩亚洲不卡| av不卡免费看| 亚洲欧美偷拍卡通变态| 国产私拍一区| 久久精品一本久久99精品| 看欧美日韩国产| 最新国产成人av网站网址麻豆| 女生裸体视频一区二区三区| 欧美gay视频激情| 亚洲精品国产精品久久清纯直播| 欧美成人午夜免费视在线看片| 亚洲欧洲精品一区二区三区不卡 | 国产精品久久久久久超碰| 99视频精品| 欧美一级理论片| 国产一区二区三区日韩欧美| 久久高清福利视频| 你懂的成人av| 亚洲午夜精品视频| 国产午夜精品一区理论片飘花 | 牛牛精品成人免费视频| 亚洲精品日韩在线观看| 欧美日韩一级黄| 午夜激情综合网| 久热精品视频在线观看一区| 91久久精品美女高潮| 欧美体内she精视频在线观看| 亚洲一区二区三区午夜| 噜噜噜噜噜久久久久久91| 日韩特黄影片| 国产精品自拍在线| 久久午夜精品| 一区二区三区高清| 美女免费视频一区| 在线亚洲免费| 日韩小视频在线观看专区| 国产精品理论片| 久久午夜影视| 亚洲手机在线| 欧美国产日韩xxxxx| 午夜视频久久久| 亚洲人成在线影院| 国产欧美欧洲在线观看| 欧美成人一区二区三区| 欧美亚洲一区在线| 亚洲精品国产日韩| 久久影院午夜片一区| 一区二区三区国产盗摄| 揄拍成人国产精品视频| 国产精品久久久久毛片大屁完整版| 久久这里只有| 先锋资源久久| 在线亚洲激情| 亚洲精品久久久久| 欧美v国产在线一区二区三区| 亚洲欧美在线免费| 一片黄亚洲嫩模| 亚洲精品欧美日韩| 在线精品福利|