欢迎来到使用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提供的指南进行操作的话,这个过程将非常简单:www.digitalocean.com/community/t…

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

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

安装私有网络和NEOSCAN

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

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

docker pull cityofzion / neo-privatenet

…下载NEOSCAN …

wget raw.githubusercontent.com/slipo/neo-s…

…并运行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);#endifthis.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区块链进行交互。

原文链接:medium.com/@tbriley/ma…

翻译:包子

最新文章

  1. Android EditView 软键盘把布局顶上去的处理方法
  2. SQL语言之DQL语言学习(三)排序查询
  3. JAVA基础面试中的几个问题
  4. C/C++(C++返回对象与应用区别,类成员的存储)
  5. C#中使用DLL文件
  6. 难道我真的只是你生命中的过客?
  7. Jquery checkbox选中问题
  8. # 图书馆网上销售系统(c#+sql server)
  9. 电脑关机程序(源码)
  10. adb命令连接设备出现Offline
  11. 一文读懂阿里云直播技术是如何实现的
  12. mysql 访问被拒绝如何解决
  13. 计算机显示错误屏幕,如何解决显示器分辨率错误
  14. 计算机启动不能马上联网,电脑开机慢不能联网
  15. 七种常见阈值分割代码(Otsu、最大熵、迭代法、自适应阀值、手动、迭代法、基本全局阈值法)...
  16. Face++人脸搜索入门篇
  17. 3D摄影机选择指南,你知道自己需要什么样的摄影机吗?
  18. decode() missing 1 required positional arguement: 'output'
  19. C语言程序设计教程(第三版)课后习题11.1
  20. TPAMI 2022 | 自动搜索文本识别网络的高性能特征提取器

热门文章

  1. Win10 DISM 清理 C盘的 WinSXS 文件夹
  2. JavaScript中的mouseover与mouseenter,mouseout和mouseleave的区别
  3. nagiosxi 监控Linux系统
  4. 【转贴】龙芯生态产品和解决方案巡展(第四篇)——存储
  5. Joel 技术分享心得
  6. c语言实现注册页面窗口,C语言控制台程序实现的注册登录
  7. 虹科方案 | 虹科基于空口测试的新型5G毫米波测试方案
  8. SSL证书是要怎么部署的,SSL证书怎么安装你知道吗?
  9. 架构师成长之路(3)--如何成为架构师(方法)
  10. 企业在项目中采用工时管理系统的好处