UNITY transform類的使用

我們來詳談Unity的transform使用,這里所說的tansform不是類UnityEngine命名空間下的Transform,而是transform.

Transform 是Unity中最常用的類了摊腋。

其類的代碼如下,代碼貼出來太長也不是要說的重點:



我們所說的是常用的還有對象組件自身的transform,他里面包含了位置昏鹃,旋轉(zhuǎn),縮放參數(shù)诀诊。

在常用組件Compnent的代碼中:


注意這個東西是屬性洞渤,有g(shù)et,沒有set.

當(dāng)然命名空間仍舊為UnityEngine属瓣。

二载迄、transform用法及其原因

我們先來看看讯柔,這個WrapperlessIcall ,它是unity中一個屬性字段护昧,他有什么用呢魂迄?

WrapperlessIcall 內(nèi)部實現(xiàn),非公開方法惋耙。

大家來看看如下代碼:


看起來稀松平常极祸,波瀾不驚,但是下面水還是蠻深的怠晴。

使用myTransform替代this.transform遥金。如果你不知道u3d內(nèi)部實現(xiàn)獲取方式你肯定會以為這人腦抽水了,有直接的不用蒜田,還自己保存起來稿械。

this.transform并不是變量,而是一個get/set屬性(property)

他是一個C++寫的代碼冲粤,在Mono中被調(diào)用美莫。調(diào)用是intenal method的調(diào)用,其效率本身不是高梯捕。

比如厢呵,transform 經(jīng)常需要保存在本地,然后在使用傀顾。

n

值得注意的是這個調(diào)用方法略慢襟铭,因為你需要調(diào)用外部的CIL(aka interop),花費了額外的性能短曾。

三寒砖、新的版本會不會做了優(yōu)化呢?

個人覺得這個是之前的unity版本的東西嫉拐,可能效率和性能沒有做優(yōu)化哩都。

WrapperlessIcall][MethodImpl(MethodImplOptions.InternalCall)]

1

2

就這些屬性來說,有的是直接調(diào)用C++代碼婉徘,有的則是調(diào)用.net的內(nèi)部函數(shù)到Unity中漠嵌。

對于新的版本是不是有的優(yōu)化處理呢,自己做了測試:

先看看現(xiàn)在Compnent的代碼:


效率有手動cache (4ms)>>transform(20ms)>>this.tranform(22ms)>> GetComponent()(54ms)

但是原來的測試結(jié)果為:

1000000 次的Iterations

GetComponent=619ms

Monobehaviour = 60ms

CachedMB = 8ms

Manual Cache = 3ms


看來這其中還是有奧秘的盖呼。

我電腦配置目前還算可以儒鹿,win7 64 位,I7-3770 + 960顯卡+ 16G內(nèi)存塌计。

結(jié)果對比挺身,相對與之前2012年Unity版本侯谁,可能mono做了很大的優(yōu)化锌仅,當(dāng)然我們的電腦可能還是不一樣章钾,沒有辦法直接做對比,也只能猜測而已热芹。

但是結(jié)論還是一樣的:

在以后的使用中贱傀,若大量使用,還是需把transform給手動保存下來吧伊脓。

說明:

代碼做了修改:

原來的代碼中有這些:


四府寒、強制拔高啦!报腔!

我還想努力一把V晟Α!

讓別人可以直接用纯蛾,但是有不修改原有代碼:

怎么辦呢纤房?

既然大家都要繼承monobehaviour,那我就在他上面想辦法。

4.1 方法一翻诉,實現(xiàn)一個擴展方法:


但是這個擴展方法炮姨,必須靜態(tài)的,所以沒有辦法做一個靜態(tài)的臨時變量啊碰煌,這個不靠譜啊舒岸。

若寫成上面的代碼效率并沒有太多提高。每次還是需要賦值芦圾。

所以這個路走不通岸昱伞!个少!

來看方法二吧碍脏。

4.2 方法二,乾坤大挪移稍算,重新命名類


UnityMonoBehaviour 這個是啥呢典尾?哈哈

看using UnityMonoBehaviour = UnityEngine.MonoBehaviour;

我們來看看結(jié)果:

直接使用tranform 和this.tranform花費時間為9ms,比上面的20多ms,那是降低了很多糊探。

但是钾埂,這個是結(jié)論啊,還是沒有手動緩存的效果高啊科平,依舊為4ms褥紫。

放出所有代碼:

五、參考:

https://forum.unity3d.com/threads/cachedmb.130365/

http://pastebin.com/vYKK4pat

http://blog.sina.com.cn/s/blog_5b6cb9500101fkal.html

http://answers.unity3d.com/questions/700468/where-do-methods-mocked-with-wrapperlessicall-meth.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瞪慧,一起剝皮案震驚了整個濱河市髓考,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弃酌,老刑警劉巖氨菇,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儡炼,死亡現(xiàn)場離奇詭異,居然都是意外死亡查蓉,警方通過查閱死者的電腦和手機乌询,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豌研,“玉大人妹田,你說我怎么就攤上這事【楣玻” “怎么了鬼佣?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長霜浴。 經(jīng)常有香客問我沮趣,道長,這世上最難降的妖魔是什么坷随? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任房铭,我火速辦了婚禮,結(jié)果婚禮上温眉,老公的妹妹穿的比我還像新娘缸匪。我一直安慰自己,他們只是感情好类溢,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布凌蔬。 她就那樣靜靜地躺著,像睡著了一般闯冷。 火紅的嫁衣襯著肌膚如雪砂心。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天蛇耀,我揣著相機與錄音辩诞,去河邊找鬼。 笑死纺涤,一個胖子當(dāng)著我的面吹牛译暂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撩炊,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼外永,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拧咳?” 一聲冷哼從身側(cè)響起伯顶,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后祭衩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灶体,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年汪厨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愉择。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡劫乱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锥涕,到底是詐尸還是另有隱情衷戈,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布层坠,位于F島的核電站殖妇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏破花。R本人自食惡果不足惜谦趣,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望座每。 院中可真熱鬧前鹅,春花似錦、人聲如沸峭梳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葱椭。三九已至捂寿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間孵运,已是汗流浹背秦陋。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留治笨,地道東北人踱侣。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像大磺,于是被迫代替她去往敵國和親抡句。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 111. [動畫系統(tǒng)]如何將其他類型的動畫轉(zhuǎn)換成關(guān)鍵幀動畫杠愧? 動畫->點緩存->關(guān)鍵幀 112. [動畫]Unit...
    胤醚貔貅閱讀 13,017評論 3 90
  • 有多少人走有過初戀待榔,有多少人還記得初戀。 我還記得,那個時候他為了我頂撞班主任锐锣,一晃三年腌闯,當(dāng)時我還是高二。我...
    一過之客閱讀 738評論 0 0
  • 好友跟我抱怨愛人如何如何的時候雕憔,我問她:這是真實的他嗎姿骏?還是你認(rèn)為的并演繹出來的他?她突然怔住了斤彼。 我想分瘦,我們在跟...
    Looloo閱讀 457評論 0 1
  • 上次去沈陽考試,偷懶沒有規(guī)劃路線琉苇,只好下車后駐足于一處公交站牌下下載地圖嘲玫。茫然四顧,注意到站牌附近有一處小巷并扇,巷口...
    塔塔妹閱讀 211評論 0 0
  • 閨蜜聚會去团,L一臉愁容。 起因是昨日她從下午5點半在商場等老公穷蛹,結(jié)果老公8點才到土陪。L一肚子火。 飯桌上肴熏,L小姐心平氣...
    古月如歌519閱讀 312評論 2 6