五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

(godot引擎筆記)反射、特性

2021-03-27 00:38 作者:流年夏華  | 我要投稿

????????嚴(yán)格來(lái)說(shuō)這不算是godot里的內(nèi)容,但是鑒于該內(nèi)容我還蠻喜歡的,索性就放進(jìn)來(lái)好了。

????????要理解反射with特性能做什么,首先要了解反射以及特性的概念。鑒于網(wǎng)上的文章對(duì)這一塊都不怎么講人話,這里就斗膽對(duì)這兩個(gè)東西進(jìn)行解讀。

一、反射:

????????微軟在C#的文檔是這么講解的:反射提供描述程序集、模塊和類型的對(duì)象(Type?類型)。?可以使用反射動(dòng)態(tài)地創(chuàng)建類型的實(shí)例,將類型綁定到現(xiàn)有對(duì)象,或從現(xiàn)有對(duì)象中獲取類型,然后調(diào)用其方法或訪問其(注:官方翻譯寫成“器”,是錯(cuò)別字)字段和屬性。?如果代碼中使用了特性,可以利用反射來(lái)訪問它們。

????????微軟在C#的反射里提供了一個(gè)小例子:

下面一個(gè)簡(jiǎn)單的反射示例,使用方法?GetType()(被?Object?基類的所有類型繼承)以獲取變量類型:

?備注????請(qǐng)確保在 .cs 文件頂部添加?using System;?和?using System.Reflection;。

輸出為:System.Int32。

????????可以發(fā)現(xiàn),這里使用了反射中的System.GetType(),事實(shí)上,反射的命名空間中有System和System.Reflection兩個(gè),這里著重講System.Reflection。

二、特性

微軟在C#的文檔是這么講解的:使用特性,可以有效地將元數(shù)據(jù)或聲明性信息與代碼(程序集、類型、方法、屬性等)相關(guān)聯(lián)。?將特性與程序?qū)嶓w相關(guān)聯(lián)后,可以在運(yùn)行時(shí)使用?反射?這項(xiàng)技術(shù)查詢特性。

這么說(shuō)可能還不太懂,那就用下面這個(gè)代碼例子來(lái)說(shuō)明:

輸出為:

????????可以看到,利用反射篩選特性,可以輕松的做到獲取具體實(shí)例所需要的內(nèi)容,并忽略掉不需要的內(nèi)容,這在游戲數(shù)據(jù)開發(fā)的時(shí)候是很好用的,比如:

我們給一個(gè)裝備類設(shè)計(jì)了以下詞條:

????????如果我要設(shè)計(jì)一把物理武器,那在不使用反射的情況下,我可能要用一個(gè)子類代表只有物理攻擊力的武器,用一個(gè)子類代表只有魔法攻擊力的武器,用一個(gè)子類代表只有真實(shí)攻擊力的武器,用一個(gè)子類代表同時(shí)擁有物理攻擊力和魔法攻擊力的武器,用一個(gè)子類代表……

????????這還只是三個(gè)詞條,如果詞條復(fù)雜起來(lái),并且有刪改的需求的話,那么這就是一個(gè)繼承的地獄。

????????而用反射with特性,可以很好的解決這個(gè)問題,只需要搭好反射和特性的框架,后面的類怎么修改都不會(huì)影響前面框架的使用。

????????除此之外,反射with特性還能通過IO很好的和游戲數(shù)據(jù)表相結(jié)合,用得好的話改表能輕松很多。

(godot引擎筆記)反射、特性的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
九江县| 万安县| 石城县| 海兴县| 武夷山市| 东丽区| 昌乐县| 九江市| 太保市| 呈贡县| 襄垣县| 涟水县| 军事| 兴安盟| 依兰县| 图片| 张家口市| 平阳县| 本溪市| 南京市| 双柏县| 台前县| 宁河县| 大厂| 黄大仙区| 西吉县| 蓝田县| 沐川县| 吉首市| 津市市| 祥云县| 佛山市| 泌阳县| 晋江市| 剑川县| 文山县| 洪江市| 泰顺县| 连平县| 苏州市| 富源县|