顯示包含「uFrame」標籤的文章。顯示所有文章
顯示包含「uFrame」標籤的文章。顯示所有文章

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年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年2月5日星期五

[Unity3D] 手動更新uFrame到最新的Unity版本

因為uFrame對相應Unity的版本更新比較慢,所以uFrame用家有時不得不手動更新uFrame到最新的Unity版本

之前試過從Unity 5.0更新到Unity 5.1遇上一個小問題,最後發覺原來是Unity的命名改變了:

不過在uFrame,有個比較萭用的方法,因為uFrame有兩個腳本(Script)會檢查Unity的版本,只要加上新得版就可以了!

這兩個腳本分別是:
UIBinding.cs
JSON.cs (這個要修改的地方在line 665, 比較難找~)

本來是這樣:
#if UNITY_4_6 || UNITY_5_0 || UNITY_5_1 

加上新版本:
#if UNITY_4_6 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_5_3

完成!uFrame可以用在新的Unity版本了~

題外話:
下面有網友提及Header 3 會出面error的問題,小弟之前在Unity 5.1版本也遇過這個問題,好像是uFrame自身的Header 3有點怪,我暫時的設定是這樣,暫時也沒有問題

[Unity3D]學習UniRx前對它的認識

(這篇是念念碎文章還沒有學習的心得,不過讀者有興趣先了解一下也可以看看喔)

認識UniRx(Reactive Extensions for Unity)是因為小弟在uFrame,而uFrame這插件在版本1.5之後也加入了UniRx這個插件,其實小弟剛開始以為UniRx的功能是屬於uFrame的,然後才發現原來Asset Store有一個叫UniRx的插件,而且是免費的!最近發覺得UniRx好像很強大,所以想研究起來,我們先看一點UniRx在Asset Store的簡介,文末也有一些相關傳送門,大家對小弟的文字沒興趣可以直接滑下去喔XD

//Reactive Extensions for Unity that allows LINQ to asynchronous and LINQ to multithreading and LINQ to events and more. Welcome to the reactive game architecture! //

//Ordinary, Unity network operation use WWW and coroutine but coroutine is not good practice for asynchronous operation.//

//Unity is single thread but UniRx helps multithreading for join, cancel, access GameObject etc.//

2016年1月6日星期三

[Unity3D]uFrame MVVM & ECS WIKI

Penflip 裏的早前 Book of Frame 已經沒有了,如果想看uFrame的文檔可以到一直都在的GitHub
https://github.com/InvertGames/uFrame.Documentation

uFrame MVVM在這裏:
https://github.com/InvertGames/uFrame.Documentation/blob/master/uFrameMVVM/pages/home.md

uFrame 1.6 Example Project的Tutorial 放在這裏了,大家去興趣可认到這裏看喔~
https://github.com/InvertGames/uFrame.Documentation/tree/master/uFrameMVVM/tutorials/getting-started-for-uframe-mvvm-16

上年uFrame 終於出了 uFrame ECS(Entity Component System), 感謝uFrame大大們,如果就上年10月前買了uFrame MVVM可以免費取得 uFrame ECS Indie,就是可以用uFrame ECS但是沒有Source Code,有Source Code的版本是uFrame ECS Pro,這個比較貴喔,我想Indie還好吧。uFrame ECS 好像把遊戲的邏輯拆得更少,用上去比uFrame MVVM更易入手。小弟還沒有詳細試試看,有機會再跟大家更新

uFrame ECS:
https://github.com/InvertGames/uFrame.Documentation/blob/master/uFrameECS/Overview.md

我也弄了一個ECS的播放淸單:
https://www.youtube.com/watch?v=uxivyGL5StA&list=PL_4-s3WYPtenJlTdsCTl8i9Vi1bj-KMOU&index=1

2015年10月14日星期三

[Unity3D]讓自己的腳本(Script)成為uFrame的東西


最近在把另一個第三方插件 - GameObject Grids Pro放進uFrame裏。本身在uFrame以外寫了一個繼承了GridBehaviour的腳本

public class GSHexGridManager : GridBehaviour{
//Game Logic
}

大概是這樣,然後在uFrame裏建立一些玩家(Player)和敵人(Enemy)的東西,希望想在GSHexGridManager用一些玩家和敵人的數據和邏輯,但發覺不把GSHexGridManager轉成uFrameComponent是無法找到玩家和敵人的東西!也就是uFrame這個系統會一直不知道GSHexGridManager這個腳本的存在!

所以,我的 GSHexGridManager要同時繼承GridBehaviour和uFrameComponent兩個類別(Class),但這是C# 不准許的事情!然後想用Interface (介面)的方法去處理這個問題!

然後發覺有人問過這樣的問題:
http://forum.unity3d.com/threads/gamelogic-grids-a-library-for-hex-tri-polar-and-square-grids.189866/page-7#post-1780947

2015年9月24日星期四

[Unity3D]接觸uFrame三個月有感

接觸uFrame大約有三個月了,其實這差不多也是開始了解並進行遊戲製作的時間。雖然有用Unity3D的經驗,但其實一直都不知道遊戲該怎樣做的。所以大約三個月前就可以問Google大神遊戲該怎樣做,然後在網上尋找一些寫遊戲的結構,框架之類,希望方便自己寫遊戲。其實小弟剛開始是研究MVC模式,但覺得有點困難。後來偶然在Asset Store發現uFrame,它用的是MVVM + Controller 的模式,覺得不錯,就買下來用了。三個月很快就過去了。驀然回首,雖然自己還是一名菜鳥,但對遊戲製作的認識及程式上的知識都多了。我想其中一個主要是uFrame 其實有個Slack的群組,大家只要買了uFrame就可以進去了,那裏可以問uFrame的問題、Unity3D的問題、遊戲製作的問題、甚至各種代碼的問題或閒聊都可以!群組裏的人滿友善。話說回來,這篇文章主要不是技術分享,只想說用uFrame的心路歷程。

如果想先了解uFrame是甚麽的話,可以先去看看小弟第一篇關於uFrame的文章!
傳送門:http://isaacforfun.blogspot.hk/2015/06/uframeflappy-brid.html

買下uFrame的6月的事,剛開始研究時發現先用uFrame 寫一個小遊戲最實際,然後就跟著官方教學的Angry Flapper(也就是Flappy Bird)來寫。剛開始其實廷順利的,跟著做大概很快就做好了,而且對uFrame的理解也多了,說到底就是 MVVM +Controller的模式。但發覺跟著教學做還是有一些問題,例如遊戲中的管子在離開畫面沒有被破壞(Destroy),後來發現原來版本不對了!身邊又沒有人用uFrame!最後發現原來uFrame有一個Slack的群組供大家發問,進去了之後很快就把問題解決了!

但是同時得知uFrame很快就更新了,還說到更新到版本1.6後會加入不少新元素,總之感覺是用當時1.5版本開發的話,轉過去1.6會很麻煩,也不知版本1.6的實際釋出的時間。因為覺得uFrame 1.5版本不用再有用,所以就放棄了研究uFrame 1.5,也沒有再更新用uFrame寫Flappy Bird系列的文章。有一段短時間重拾MVC模式的懐抱。

2015年9月15日星期二

2015年7月27日星期一

[Unity3D] "The Book Of uFrame"的誕生

自從在Asset Store買了uFrame之後加入了他們Slack的群組,這裏的氣氛超好,Developers都很有善很樂意答解不同問題和一起討論uFrame可以改善的地方,當然我也是其中一個受惠的人XD uFrame 1.6更新之後增加了不少的東西,然後大家都好奇的在試,當中新增了一個Default Project,裏頭也有不少東西值得學習,但是沒有太多指引下,對小弟來說實在有點難度...... 然後有一天,群組裏出現了一群有心人,決定弄一個比較完善和合適uFrame 1.6的Wiki, 就是這樣,"Book of uFrame" 在這幾個有心人的努力下慢慢形成了: https://www.penflip.com/bartlomiejwolk/uframe-documentation?invite=kVBKehap

目前還會不斷更加內容,當中有GitHub本身已經有的Wiki (uFrame Guide):
https://www.penflip.com/bartlomiejwolk/uframe-documentation/blob/master/pages/home.md

以及我期待以久的uFrame 1.6 tutorial~
uFrame MVVM 1.6 Getting Started I:
https://www.penflip.com/bartlomiejwolk/uframe-documentation/blob/master/tutorials/getting-started-for-uframe-mvvm-16/tutorial-1.md
uFrame MVVM 1.6 Getting Started II:
https://www.penflip.com/bartlomiejwolk/uframe-documentation/blob/master/tutorials/getting-started-for-uframe-mvvm-16/tutorial-1.md

Getting Started I 主要是如何建立第一個uFrame專案和運行裏頭Default Project的步驟

Getting Started II 則主要講述Default Project裏的操作環境和MainMenu System的部分,還會教你在每個Screen 轉換時做簡單的動畫(Default Project本身沒有的)

大家有興趣可以先去看看喔~

2015年7月15日星期三

[Unity3D]uFrame 1.6更新了


昨天uFrame 終於在Asset Store正式更新到1.6:
https://www.assetstore.unity3d.com/en/#!/content/14381


因為官方之前說好了1.6 之前會減價,所以更新到1.6之後格價從$60上調回$90了 (幸好在$60時買了)。Asset Store的uFrame還會提及1.5r2 及 1.6兩個版本。大概因為1.6版本的改變不少,uFrame 1.6 特別提及到新增了Kernel 這東西,官方也更新了youtube channel的教學:

KernelTalk(UFRAME 1.6 PART1)
https://www.youtube.com/watch?v=g6aWob_UbK0&list=PLkyxC3Co3Q39AyC_jB_kK4WoGpSZzjSa6

UFRAME 1.6 PART2
https://www.youtube.com/watch?v=QSwXIlNbVCg

PART 1分了三段:
第一段簡介Kernel的由來
第二段重點講述Kernel及提供兩個例子作講解(沒有uFrame MVVM)
第三段講述 Kernel跟 uFrame MVVM的合作

PART 2則總括講述 uFrame 1.6 的重點更新,作業環境等等


2015年6月18日星期四

用uFrame寫Flappy Bird(二)遊戲結構

廢話

來到第二回,開始跟大家做遊戲了。首先申報一下,希望想用uFrame 1.5 寫 Flappy Bird 的朋友可以先跟上 youtube 的教學片,並視本文為輔助。因為本日誌的主要目的是幫助小弟自己記錄學習過程(有夠自私XD),不會一步步跟大家做,內容可能不完整,而且小弟也是 Unity 的新手,如果當中有甚麽不對請多多包涵及請告訴小弟,謝謝


前言

這回先不會提及代碼,但是會簡單講述我們在uFrame環境中看到的所有東東,就是它們告訴我們遊戲的結構,而且透過uFrame我們可以用圖像來表達一下。首先我就先介紹它們的名字:
-GameManager
-SceneManager
-SubSystem
-Element
-View
-State

那Flappy Bird我想大家都知道是怎樣玩吧?不知道的話可以看看 youtube 的教學片,基本上是一樣的。

uFrame寫Flappy Brid的教學片: https://www.youtube.com/watch?v=oo8sRgCa6hk&list=PLkyxC3Co3Q38r0ZWow9Jw1Xd7Wj0xbdnd&index=1


遊戲結構

首先在uFrame的環境是空空如也(那當然XD), 這裏我們先稱為Root, 在Root的環境我們先加入一個SceneManager,就叫AngryFlapperManager吧;然後再加入一個SubSystem,就叫Game吧,然後把Game連上AngryFlapperManager,如下圖:


那SceneManager和SubSystem是甚麽呢?

SceneManager 顧名思義就是管理(某一)場景,每一次你載入一個場景,uFrame會確保所有東西已經載入和可以正確地運作(當然首先要你代碼正確),另外SceneManager會提供場景轉換,AngryFlapperManager下的Transitions,我加了GoToMenu,這個之後我再作講解
(想了解多點SceneManager可以來這裏:https://github.com/InvertGames/uFrame/wiki/Scene-Managers)

SubSystem就是子系統,在設計遊戲時,你就可以透過子系統把不同代碼分類,例如:AimingSystem, AISystem, MovementSystem等(大家猜到是甚麽吧),這款遊戲比較簡單,我們建一個SubSystem就可以了。每個遊戲玩家都有一個屬於自己的instance,裏面儲存玩家各種數據和狀態,所以我們之後記得把AngryFlapperGame加入到SubSystem的instances裏(現在還未建立,不能加的不用擔心)
(想了解多點SubSystems可以來這裏:https://github.com/InvertGames/uFrame/wiki/Subsystems)



2015年6月16日星期二

用uFrame寫Flappy Bird(一)簡介

前言

事源是小弟想寫遊戲但沒有相關經驗,雖然FYP是用Unity3D, 但是其實只是做Leap Motion的研究,不算是做遊戲。然後開始在網上尋找一些寫遊戲的結構,框架之類,希望方便自己寫遊戲。研究過MVC模式,但小弟不才,還是覺得有點困難。然後在Asset Store發現一個不錯的可視化插件做遊戲開發框架 - uFrame;然後見youtbue也有一些教學片,最後決定買下來試試看。順帶一提,uFrame是用MVVM模式的,而小弟正在用uFrame 1.51r2 version。

uFrame是甚麽?

這是從Unity Asset Store抓下去的簡介(網絡中文翻譯版):
「uFrame是最先進的遊戲開發框架設計給甚至新手開發人員工作的一個專業級圖形工具。強大的行為系統和一個強大的設計模型專門為Unity引擎開發遊戲,你會比以往開發的更快!

使用uFrame你可以比以前更好,更穩定的開發維護你的遊戲。

你有沒有為開發一個項目因為一個小的變化就改很長時間而頭疼?如果是這樣的話,uframe是你的完美解決方案!開始像現在這樣專業級開發遊戲吧!」