uFrame是根據MVVM的結構的,而當中的ViewModel是負責每一個MVVM的物件的變數(properties),如果大家不淸楚的話可以先到這裏了解一下:http://isaacforfun.blogspot.hk/2015/06/uframeflappy-brid.html
遊戲中,我們不時需要修改物件的變數,例如血量,狀況(State)等,而uFrame的結構,這是建議直接在Controller中修改變數的,但小弟有時想在View的腳本中修改ViewModel的數值,原來是可以的,但當中有它的限制,所以就在這裏列出小弟用過修改ViewModel的方法:
1. 直接在Inspector中修改
在你建立的MVVM物件中,在Inspector會顥示你建立的ViewModel的各種數值,你可以直接在這裏修改你的數值,但有兩點需要注意:
i. 記得把 Initialize ViewModel打勾,不然不會出現View Model Properties給你修改
ii. 顧名思義,這只用於初始化數據
2. 在Controller代碼中修改
我們用修改血量(Health)作例子,我們首先在uFrame Designer的介紹面,在Controller中建立ChangeHealth,然後在Controller腳本中就會有
public override void ChangeHealth(EntityViewModel viewModel)
這個功能(Function),然後在這裏用 viewModel.Health 就可以修改數值了。
viewModel.Health = the_value
另外,uFrame有一個很方便的功能,就是可以在View腳本中用
executeChangeHealth();
就可以呼叫Controller腳本中ChangeHealth這功能,但記得在在uFrame Designer的介紹面,在View介面,Binding下加入Health Change這個功能(如上圖)3. 在View代碼中修改
承上,在 View 的腳本中直接修改
this.Entity.Health
就可以修改Enitty中ViewModel的Health的數值,但有一點需要注意的,就是在View 代碼,在
protected override void InitializeViewModel(uFrame.MVVM.ViewModel model)
是不能用this.Entity.Health修改,
以下方法不能在View修改ViewModel
View腳本中有兩段代碼好像可以修改ViewModel的數據但其實是不能的,它們分別是:
this.Entity.HealthProperty
this._Health
沒有留言:
發佈留言