利用NEO與Unity製作遊戲(第2部分) 轉

歡迎來到使用Unity遊戲引擎製作的NEO區塊鏈遊戲的’A-Z’多系列講解教程的第2部分。 在第1部分中,我們設置了基本的Unity環境,並準備好連接到我們的私有測試網絡。 在第2部分中,我們將設置這個測試網。

我們將保證每個系列內容的簡潔清晰,從而對整體的工作流程做出全面地演示說明。某些內容我們會做出快速的討論,有任何不清楚的地方,隨時歡迎你發表評論,我很樂意爲你解答。

私有測試網絡

NEO Lux提供了一些方便的方法,可以用於將你的遊戲連接到官方的測試網或者是主網。

但在本教程中,我們會搭建自己的私有網絡。這個過車是非常簡單的,一旦你克服了最初的障礙(我會引導你),你會發現這比使用測試網絡更加簡單。例如,儘管填寫用於測試的GAS或者Tokens的申請表格可能不是世界上最困難的任務,但我發現就這樣一點點小摩擦,往往會扼殺我繼續的熱情和動力。

你也可以在本地運行你自己的私有網絡,不過在本教程中,我們將設置自己的服務器。這會使得團隊工作或者構建工作這類事情更加簡單直接。我將使用Digital Ocean。因爲根據我的經驗,他們具有良好的性價比。

免責聲明:我不是一個後端/服務器開發者,我猜“中等”水平的人應該會喜歡使用命令行工具。對於那些知道自己在做什麼的人來說,這些內容應該很容易。如果你瞭解Linux 和 Docker的話,可以直接從Docker Hub安裝NEO PrivateNet並使用Docker Compose運行NEOSCAN。對於其他那些或多或少是我這種水平的人來說,接下來的內容應該還是相當簡單直接的。

如果你還沒有Digital Ocean賬戶的話,就去創建一個。然後使用以下選項創建一個Droplet。

 

使用16.X或者18.X版本的Ubuntu

 

使用中配應該就足夠了 – 你可以在配置中自行嘗試,並在評論中告訴我你的試驗的結果

SSH登入到你新建的Droplet並安裝docker。 如果你按照Digital Ocean提供的指南進行操作的話,這個過程將非常簡單:https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04

注意:在執行最開始的一步,向系統添加官方Docker庫的GPG鍵這步操作時,我遇到了點小問題。我只是簡單地跑了兩次命令,然後一切都很順利。

然後安裝docker組件。同樣地,安裝說明非常的簡單。只需要確保你看的是針對Linux系統的說明就行。

安裝私有網絡和NEOSCAN

運行和安裝我們自己的私有網絡,這是最爲困難的一步,好在City of Zion的人幫我們很好的做到了這一點。你可以點擊這個鏈接查看他們的全部說明指導。同樣地,SSH登錄到你的Droplet,基本上我們只需要輸入幾個命令就行:

首先,從hub上下載docker鏡像:

docker pull cityofzion / neo-privatenet

…下載NEOSCAN …

wget https://raw.githubusercontent.com/slipo/neo-scan-docker/master/docker-compose.yml

…並運行privnet …

docker-compose -f docker-compose-neoscan.yml up

讓它運行起來,然後轉到http:your-droplet-ip-address:4000查看NEOSCAN的運行情況:

 

回到Unity

我不想在本教程中深入探討自己的開發風格,不過我要做的一件事就是將UniRx插件導入Unity中。 UniRx是對.NET Reactive Extensions的重新實現,它針對Unity做了優化處理,而且能很好地兼容iOS IL2CPP。不必過於複雜的實現,它可以簡化一些管理NEO和UI的代碼。

在 資產(Assets) – > 腳本(Scripts)下創建另一個名爲NEOManager的腳本,並複製+粘貼以下代碼:

using System.Collections;
 using UnityEngine;
 using System;
 using UniRx;
 using Neo.Lux.Core;
 using Neo.Lux.Cryptography;
 using UnityEngine.UI;
 
 public class NEOManager : MonoBehaviour
 {
     public NeoAPI API;
     [SerializeField] private string RpcIP;
 
     public const string AssetSymbol = "GAS";
 
     [HideInInspector]
     public KeyPairReactiveProperty PlayerKeyPair = new KeyPairReactiveProperty();
 
     [SerializeField] private Text addressText;
     [SerializeField] private Text balanceText;
 
     public Decimal GASBalance;
 
     private void OnEnable()
     {
         PlayerKeyPair.Value = KeyPair.FromWIF("KxDgvEKzgSBPPfuVfw67oPQBSjidEiqTHURKSDL1R7yGaGYAeYnr");
 
 #if UNITY_EDITOR
         //this.API = new LocalRPCNode(30333, "http://localhost");
         this.API = new CustomRPC(30333, 4000, "http://" + RpcIP);
 #else
         //this.API = NeoRPC.ForTestNet();
         this.API = new CustomRPC(30333, 4000, "http://" + RpcIP);
 #endif
 
         this.PlayerKeyPair.DistinctUntilChanged().Where(kp => kp != null).Subscribe(keyPair =>
         {
             this.addressText.text = "Address: " + keyPair.address;
             this.balanceText.text = "Balance: Please wait, syncing balance...";
 
             StartCoroutine(SyncBalance());
         }).AddTo(this);
     }
 
     private IEnumerator SyncBalance()
     {
         yield return null;
         var balances = this.API.GetAssetBalancesOf(this.PlayerKeyPair.Value);
 
         this.GASBalance = balances.ContainsKey(AssetSymbol) ? balances[AssetSymbol] : 0;
         this.balanceText.text = "Balance: " + GASBalance.Value.ToString() + " " + AssetSymbol;
     }
 }
 
 [Serializable]
 public class KeyPairReactiveProperty : ReactiveProperty<KeyPair>
 {
     public KeyPairReactiveProperty() { }
     public KeyPairReactiveProperty(KeyPair initialValue) : base(initialValue) { }
 }

保存腳本然後返回主場景。 創建一個空的 遊戲對象(GameObject),將其命名爲NEO,然後創建一個該NEO對象的空的 遊戲子對象(child GameObject),並將其命名爲NEOManager,並將NEOManager腳本添加到這個NEO對象中。 在檢查器 (inspector)中的RpcIP字段旁邊輸入你的Droplet的IP地址。

 

接下來,我們將創建一些UI元素並將它們連接到檢查器中,這樣在連接到主網的時候,我們就可以看到餘額的更新。

創建UI畫布並向其中添加兩個子文本元素,然後單擊並將它們的引用拖動到NEOManager的“ (Address Text)”和“(Balance Text)”字段。

 

單擊 播放(Play)按鈕然後查看地址和餘額的更新情況。

 

我們當前使用的是在安裝私有網絡時自動生成的測試賬號。 在下一部分中,我們會進行一些設置,以便我們的玩家可以輸入他們自己的私鑰然後開始與NEO區塊鏈進行交互。

原文鏈接:https://medium.com/@tbriley/making-a-game-with-neo-unity-part-2-5e1df705ed39

翻譯:包子

                                                               

NEOFANS:neofans.org

NEOFANS 微博:https://www.weibo.com/neofanscommunity

NEOFANS  telegram羣:https://t.me/NEOfansCN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章