2016年6月13日星期一

[Unity3D] uFrame裏修改ViewModel的各種方法


uFrame是根據MVVM的結構的,而當中的ViewModel是負責每一個MVVM的物件的變數(properties),如果大家不淸楚的話可以先到這裏了解一下:http://isaacforfun.blogspot.hk/2015/06/uframeflappy-brid.html



遊戲中,我們不時需要修改物件的變數,例如血量,狀況(State)等,而uFrame的結構,這是建議直接在Controller中修改變數的,但小弟有時想在View的腳本中修改ViewModel的數值,原來是可以的,但當中有它的限制,所以就在這裏列出小弟用過修改ViewModel的方法:

2016年5月1日星期日

[PixelArt]Aseprite OR Pyxel Edit

突然發現下文原來是在兩個多月前寫下的,軟件買下來之後沒什麼時間畫,以下是患有選擇困難症的小弟買畫素像畫軟件:Aseprite 或 Pyxel Edit之前的少少研究,希望大家有用~

===============兩個月前的文章=======================

事源是小弟突然對Pixel Art(素像畫)產生了興趣,然後Google了一下想找一些畫的軟件

http://www.slant.co/topics/1547/~pixel-art-sprite-editors

最後在兩款都很好的軟件之間猶豫:Aseprite 和 Pyxel Edit



它們的價錢也差不多,分別是10美元和9美元,而且都支援Mac和Window!但小弟有選擇困難症﹐而且也想先買一個試試看,於是就開始找不同......

小弟在 Google 和 Youtube 的協助下了解它們的分別,還有不要面的在Twtich找畫素像畫的實況主,問他們Aseprite和Pyxel Edit的分別

在未決定買那個之前,我就簡單講述一下兩者的分別。


2016年4月22日星期五

[Unity3D]大型手遊用,Android OBB文件研究


為什麼用到OBB (Opaque Binary Blob)?
Google Play限制了只可以上載小於100MB的apk檔(以前是50MB),但App Store提供上載apk擴展文件,OBB檔則是一種可供上載的擴展文件。

//啟用分離應用程序二進制(Split Application Binary)時,播放器可執行文件和數據將分離,生成僅包含可執行(Java, Native) 代碼(約為10MB)、任何及所有腳本/插件代碼以及第一個場景數據的.apk(主要應用程序二進制)。其他數據(所有其他場景、資源、流媒體資源...)將分別序列化成 APK 擴展文件 (.obb)。//


之後我在Asset Store找到個OBB Downloader
Google Play OBB Downloader:
https://www.assetstore.unity3d.com/en/#!/content/3189

但是我試了一整天都無辦法下載建立出來的OBB,然後有人告訴我,Unity 4.6之後可以自動下載OBB了,所以可以以不用這插件 OTL

然後,幾經辛苦,終於可以用OBB了,以下是一些小心得跟大家分享

2016年4月7日星期四

[Unity3D]用uFrame的Kernel在場景間修改玩家狀態和數據


在uFrame 1.6的 Example Project裏有一個UserManagementSystem的系統(WinCondition這個eEnum是我之後加的,下文會再討論)



public class UserManagementService : UserManagementServiceBase
{
    [Inject("LocalUser")] public UserViewModel LocalUser;

    public override void Setup()
    {
        base.Setup();
  // for develop only
  LocalUser.AuthorizationState = AuthorizationState.Authorized;
        //LocalUser.AuthorizationState = AuthorizationState.Unauthorized;
    }

    public void AuthorizeLocalUser(string Username, string Password)
    {
        if (Username == "uframe" && Password == "uframe")
        {
            Debug.Log("authorized in service");     
            LocalUser.AuthorizationState = AuthorizationState.Authorized;
        }
    }
}

這是處理Example Project內一開始登入的部份,就是確認登入成功後把AuthorizationState這個Enum轉成Authorized,方便在其他腳本檢查玩家的狀態。

我在想,是不是可以用UserManagementSystem內UserViewModel(我把這個instance命名為LocalUser, 上圖左上角)儲存玩家各種設定和資料,然後在不同場景不同的View 或 Controller的腳本把LocalUser取出來用或修改設定呢?

簡單說個例子,其中一個想做的功能就是在主畫面(有一個SetBattleScreenView)按不同作戰/勝利模式的按鈕,會修改LocalUser中WinCondition的設定,在進入作戰畫面後(另一個場景scene),而作戰畫面會檢查玩家在用哪個勝利模式(就是WinCondition),而運行不同的代碼。



(如果大家不了解uFrame MVVM模式可以來這裏了解一下:http://isaacforfun.blogspot.hk/2015/06/uframeflappy-brid.html)

2016年3月29日星期二

[Unity3D]讀取畫面之簡單進度條制作(Loading Screen)

之前轉換場景一直是用以下的方法:

Application.LoadLevel("SceneName")

因為這個方法比較懶和方便,但隨著場景內的東東越來多,轉場需時也開始越來越長,也因此在轉場時有了是不是卡住了或死機了的感覺。有見及此,小弟要開始製作一個有進度條的過場效果。然後找到Unity3D有以下的方法可以用:

Application.LoadLevelAsync ("SceneName");

剛開始滿失望的因為看到Unity Pro才可以用,然後發覺得原來Unity5已經可以免費使用了!關於它的API請到這裏:http://docs.unity3d.com/ScriptReference/Application.LoadLevelAsync.html

好了我們開始製作了~