卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

unity添加腳本時(shí)調(diào)用方法 如何在Unity中實(shí)現(xiàn)MVC模式?

如何在Unity中實(shí)現(xiàn)MVC模式?在c#短信的開發(fā)當(dāng)中,我并沒有刻意地采用rpc框架,因?yàn)椴幌窬W(wǎng)站開發(fā)那樣,Model,View,Controller在手機(jī)這個(gè)領(lǐng)域里還沒有很清晰的定義。究其原因,可能

如何在Unity中實(shí)現(xiàn)MVC模式?

在c#短信的開發(fā)當(dāng)中,我并沒有刻意地采用rpc框架,因?yàn)椴幌窬W(wǎng)站開發(fā)那樣,Model,View,Controller在手機(jī)這個(gè)領(lǐng)域里還沒有很清晰的定義。究其原因,可能是由于不同游戲類型本身的芯片可以相差很遠(yuǎn),而且網(wǎng)絡(luò)里面的Object之間有大量的交互,所以垂直的面向?qū)ο笏坪醪皇鞘謶?yīng)景。

然而,某種程度的分離代碼邏輯是必要的,可以提高代碼的可維護(hù)性和重用性。下面我說說自己的一些經(jīng)驗(yàn)。

假設(shè)我們在做一個(gè)喜羊羊:對(duì)于微博里的角色,我會(huì)采用這樣一個(gè)結(jié)構(gòu)。CharacterManager,它的作用是包含這個(gè)角色的Controller(s),并提供一個(gè)餐桌(Blackboard)

如何在Unity中實(shí)現(xiàn)MVC模式?

。Controller,利用ReusableModels來處理角色在這個(gè)網(wǎng)站中的某一狀態(tài)的邏輯。ReusableModel,是一個(gè)虛的概念,并不是一個(gè)父類,通常這類Model都負(fù)責(zé)某一個(gè)特定的功能,可以重復(fù)利用,可看做渲染引擎的延伸。我會(huì)將CharacterManager和ReusableModel繼承MonoBehavior,這樣我們就能夠直觀地知道這個(gè)角色是什么類型的Character,并且可以利用inspector調(diào)節(jié)Model的參數(shù)。怎么將上面的架構(gòu)應(yīng)用在馬里奧兄弟身上呢:作為Character Manager,我們可以采用FiniteStateMachine或者BehaviorTree。一個(gè)好處是它們都天然地提供了“Controller”。例如FiniteStateMachine,它的每一個(gè)State都可以看作一個(gè)Controller。而Behavior Tree里面的Actionjava,也可以看作是一個(gè)Controller。

在每一個(gè)Controller里面,都會(huì)有指針指向一些ReusableModel。例如下圖MoveState可以有一個(gè)MoveMotor,專門來實(shí)現(xiàn)GameObject的移動(dòng),而Sprite則封裝GameObject的表現(xiàn),如動(dòng)畫、旋轉(zhuǎn)、位置等等。這些ReusableModel通常都提供豐富的參數(shù)可供調(diào)整,可以用于不同短信當(dāng)中。

用戶輸入和里面的消息,則會(huì)暫存在Character Manager里面的Blackboard里,供Character Manager使用,讓它決定是否需要更換Controller。例如馬里奧兄弟里面我按左鍵,往左行動(dòng)的信息會(huì)寫在FSM的Blackboard里面,然后通過FSM的State轉(zhuǎn)換機(jī)制

如何在Unity3d中實(shí)現(xiàn)和網(wǎng)頁數(shù)據(jù)的交互?

,從IdleState轉(zhuǎn)換到MoveState。這樣的好處是,往左的信息可以從Input Manager(圖中沒給出)那里得來,也可以從Enemy AI Manager(圖中沒給出)那里得來。這樣,一個(gè)類型(如擁有Idle,Move,Jump等狀態(tài))的FSM,就可以用在所有類似的角色身上,無論是玩家控制的還是illustrator控制的。

并沒有在c#里面會(huì)是這樣一個(gè)情況,F(xiàn)SM,Sprite,MoveMotor都作為Component,而Controllers則包含在FSM里面。以上方案雖然并不嚴(yán)格,但是在一定程度上提高了代碼的可復(fù)用性和可維護(hù)性。例如現(xiàn)在我基本都把MoveMotor,Sprite等Model寫好,新項(xiàng)目就直接扔進(jìn)來就能用;MoveState,IdleState,JumpState等一些在平臺(tái)游戲里常用的狀態(tài)封裝好,留出一些可調(diào)參數(shù),例如狀態(tài)間的轉(zhuǎn)換。

如何在Unity中實(shí)現(xiàn)MVC模式?

Blackboard的本質(zhì)是一個(gè)Dictionary。

如何在Unity3d中實(shí)現(xiàn)和網(wǎng)頁數(shù)據(jù)的交互?

比較原始的FSM會(huì)將State轉(zhuǎn)換直接放在State里面,但這樣大大降低了State的可復(fù)用性。因此可以嘗試將State的轉(zhuǎn)換作為一個(gè)可調(diào)參數(shù)。一些人機(jī)交互的FSM的原理也是這樣,利用連線將兩個(gè)State鏈接起來,然后通過定義一些轉(zhuǎn)換的條件。

如何在Unity3d中實(shí)現(xiàn)和網(wǎng)頁數(shù)據(jù)的交互?

首先在php腳本里寫好控制函數(shù)

然后再c里調(diào)用

().sendmessage(目標(biāo),