【新提醒】【委托、事件、觀察者模式、事件驅(qū)動程序設(shè)計(jì)(一) unity裝備越界 unity觀察者模式 unity裝備欄越界 unity裝備信息越界 】
本帖最后由 u75379946 于 2016-3-10 19:46 編輯 概述:委托就像一個(gè)接口,具體方法實(shí)現(xiàn)這個(gè)接口,而我們只需要了解委托的定義就可以調(diào)用。1.委托:A.委托的作用: a.占位,讓其他方法幫你做事-----解耦。 b.將方法(一個(gè)或綁定后的多個(gè)方法)作為方法的參數(shù)-----封裝方法。B.委托的使用://將星爺電影國際化,實(shí)現(xiàn)雙語orN語字幕 public class SubTitle { public void English() { Debug.Log("What difference does it make between people and salty fish if men don‘t have dreams?"); } public void Chinese() { Debug.Log("做人如果沒有夢想跟咸魚有什么分別?"); } public static void Bird() { Debug.Log("bb bbbbbbbbbb bb?"); } }//鳥說:我也有夢想 void BirdSay( LanguageDelegete la )
{
la ();
}
a.聲明委托 public void delegete LanguageDelegete();//注意委托的簽名與綁定的方法要一致,這里沒有參數(shù) b.創(chuàng)建Delegete對象 LanguageDelegete allLanguage = new LanguageDelegete(Subtitle.Bird); (另一種方法:LanguageDelegete allLanguage = Subtitle.Bird ;//代理靜態(tài)方法) c.綁定多個(gè)方法(多路廣播委托) BirdSay( allLanguage ); //將方法作為方法的參數(shù)使用
subTitle = new Subtitle();
allLanguage += subTitle . English;//代理實(shí)例方法
allLanguage += subTitle . Chinese;//封裝方法
allLanguage -= Subtitle . Bird;
d.調(diào)用委托 allLanguage ();輸出:注意順序
file:///C:/Users/Anchor/AppData/Local/Temp/enhtmlclip/Image(10).pngC.為什么要用委托: 在C++中有函數(shù)指針,可以用來指向函數(shù)的引用,而C#中則沒有,那怎么辦呢?通過以上學(xué)習(xí)你會發(fā)現(xiàn)委托和指針十分相似,但是委托還具有函數(shù)指針?biāo)痪邆涞膬?yōu)點(diǎn):在C++中我們經(jīng)常遇到空指針等問題,而委托則不需要擔(dān)心,即委托是面向?qū)ο?,類型安全的,不用顧慮無效地址和地址越界等問題。下次我們繼續(xù)為大家講解事件機(jī)制。
PS:其實(shí)語言只是個(gè)工具,學(xué)習(xí)以上這些知識其實(shí)都是在打磨你的工具,這樣我們才能做出更加出色的產(chǎn)品,如果你的工具現(xiàn)在還是個(gè)鐵杵,那么跟著我一起把它磨成針吧,只要堅(jiān)持,總有一天你會編織出屬于自己的夢想?。?/font> 如果你對獨(dú)立游戲,體驗(yàn)藝術(shù),設(shè)計(jì)學(xué),心理學(xué)感興趣, 歡迎關(guān)注我的新公眾微信:黑客畫家 我的主頁:anchorart9.com ,我的一些學(xué)習(xí)筆記,心得,行業(yè)咨詢等內(nèi)容將逐步更新上去。
下面是工程文件,自己有想法想要Test的可以直接下載:
本帖隱藏的內(nèi)容
鏈接.txt(48 Bytes, 下載次數(shù): 136)
unity裝備越界;unity觀察者模式;unity裝備欄越界;unity裝備信息越界;
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。