博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用NEO与Unity制作游戏(第2部分)
阅读量:7037 次
发布时间:2019-06-28

本文共 3809 字,大约阅读时间需要 12 分钟。

欢迎来到使用Unity游戏引擎制作的NEO区块链游戏的’A-Z’多系列讲解教程的第2部分。 在分中,我们设置了基本的Unity环境,并准备好连接到我们的私有测试网络。 在第2部分中,我们将设置这个测试网。

我们将保证每个系列内容的简洁清晰,从而对整体的工作流程做出全面地演示说明。某些内容我们会做出快速的讨论,有任何不清楚的地方,随时欢迎你发表评论,我很乐意为你解答。

私有测试网络

NEO Lux提供了一些方便的方法,可以用于将你的游戏连接到官方的测试网或者是主网。

但在本教程中,我们会搭建自己的私有网络。这个过车是非常简单的,一旦你克服了最初的障碍(我会引导你),你会发现这比使用测试网络更加简单。例如,尽管填写用于测试的GAS或者Tokens的申请表格可能不是世界上最困难的任务,但我发现就这样一点点小摩擦,往往会扼杀我继续的热情和动力。

你也可以在本地运行你自己的私有网络,不过在本教程中,我们将设置自己的服务器。这会使得团队工作或者构建工作这类事情更加简单直接。我将使用。因为根据我的经验,他们具有良好的性价比。

免责声明:我不是一个后端/服务器开发者,我猜“中等”水平的人应该会喜欢使用命令行工具。对于那些知道自己在做什么的人来说,这些内容应该很容易。如果你了解Linux 和 Docker的话,可以直接从Docker Hub安装NEO PrivateNet并使用Docker Compose运行NEOSCAN。对于其他那些或多或少是我这种水平的人来说,接下来的内容应该还是相当简单直接的。

如果你还没有Digital Ocean账户的话,就去创建一个。然后使用以下选项创建一个Droplet。

图片描述

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

图片描述

使用中配应该就足够了 – 你可以在配置中自行尝试,并在评论中告诉我你的试验的结果

SSH登入到你新建的Droplet并安装docker。 如果你按照Digital Ocean提供的指南进行操作的话,这个过程将非常简单:

注意:在执行最开始的一步,向系统添加官方Docker库的GPG键这步操作时,我遇到了点小问题。我只是简单地跑了两次命令,然后一切都很顺利。

然后安装docker组件。同样地,安装说明非常的简单。只需要确保你看的是针对Linux系统的说明就行。

安装私有网络和NEOSCAN

运行和安装我们自己的私有网络,这是最为困难的一步,好在City of Zion的人帮我们很好的做到了这一点。你可以点击这个链接查看他们的全部说明指导。同样地,SSH登录到你的Droplet,基本上我们只需要输入几个命令就行:

首先,从hub上下载docker镜像:

docker pull cityofzion / neo-privatenet

…下载NEOSCAN …

wget

…并运行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
{ 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区块链进行交互。

原文链接:

翻译:包子

NEOFANS:neofans.org

NEOFANS 微博:
NEOFANS telegram群:

转载地址:http://lrnal.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
生成7位随机数,并写入文件
查看>>
html+js 页面跳转进度条
查看>>
mysql登录错误
查看>>
IOS ViewController
查看>>
SubShader TAG的说明
查看>>
Android入门篇一:Android Activity生命周期
查看>>
Inline 函数
查看>>
我的友情链接
查看>>
利用“元公式”提升Excel公式技能
查看>>
VMware虚拟化解决方案 服务器虚拟化案例
查看>>
centos连接磁盘柜
查看>>
两点双向重分发引起的环路
查看>>
stunnel+haproxy SSL以及问题记录
查看>>
说说存储虚拟化技术(1 )
查看>>
elasticsearch vs solr
查看>>
oralce去掉秒后面的毫秒
查看>>
云主机迁移脚本
查看>>
集群概述及原理笔记
查看>>
使用udev管理asmdisk执行/sbin/scsi_id不显示UUID解决方法
查看>>