Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

利用NEO与Unity制作游戏 入门篇

卡哇伊嘉人
83 0 0
欢迎来到使用Unity游戏引擎制作的NEO区块链游戏的’A-Z’多系列讲解教程。我们将保证每个系列内容的简洁清晰,从而对整体的工作流程做出全面地演示说明。每个系列都与流程中的不同步骤相关联并会对相应流程做出处理,比如设置基本的游戏玩法,设置一个简单的测试服务器来连接Unity编辑器,设置编写NEO智能合约所需的开发环境,以及编写和测试简单的智能合约。某些内容我们会做出快速的讨论,有任何不清楚的地方,随时欢迎你发表评论,我很乐意为你解答。( }2 Z+ R7 g! G0 c6 ~5 N3 T

# o, Z# O" r& ^4 R5 k. Y3 p    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。
& w1 z9 N1 h' D
9 \$ |6 t3 Z9 x; }4 [- P2 H% y    生存射击
( ]/ R6 s% f- h- H6 ^0 o
9 C' I2 ^  _# y0 G  [    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。
2 S; Z$ H) i' o" P  i" g4 [, K' F% \! ?6 }
    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。2 X' n3 b# y' b& T+ c0 V

7 l% r! }9 j$ O& P# R: x4 O    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。/ t  z2 ]5 C0 l. [, E
) K6 Z: W3 W6 `1 [4 c
    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。
( M# }* H! D9 j, a; W& e! J* u& b: c9 O+ C' `4 U% J
    双击_Complete-Gamescene对象打开…
3 b& k1 q4 U) B0 x
- Z1 _+ _, Q' J, F) p. z8 S- T' u然后点击“播放”按钮来测试
! ^0 L" A% H4 A4 O/ R9 J3 U设置NEO4 V# P6 H7 S' r3 c: C! M, O- G% `
要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。2 @, f& f( b3 Y+ a

& `! t$ L0 t. {0 U" t# Q  C然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。
( u  R2 P8 u& x0 ^连接到NEO
! v7 l& W2 i6 Z: {接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。5 F" v- w' C* F# H! U9 @( j7 S
右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:
. v; {0 C" B. I0 s5 c. P% X# f4 W& [using Neo.Lux.Core;( e8 r' K) q! A: l: _5 ?% v
using Neo.Lux.Utils;% i' A; N8 B* P) S9 U
using UnityEngine;
* H/ U" |6 X2 J0 L% G& r7 @ 6 A2 g& I. x% K8 _6 X' g
public class CustomRPC : NeoRPC4 ~. H% [3 z7 l$ y6 y% B* }5 v0 S
{: H# t  Q# n+ X; W9 h6 M! b
     private string nodeURL;
5 |* o. w3 b6 b" q# U+ @
/ [: G9 w* C" Z     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())
+ d* e6 y: V$ r+ y* o, }" ~; o& U     {% O1 [! t* O/ u4 n
         this.nodeURL = neoscanPortURL;
7 H/ s; X0 i# m5 `% J6 \. k     }& n+ ^3 D5 E! X

7 ^) M) W. ]9 N5 S- J) l5 B1 k     protected override string GetRPCEndpoint()5 C' q! r, R- y
     {8 C- u5 s5 J. s( ^. F+ s% V
         return $"{nodeURL}:{port}";
2 M) ~1 K0 L2 y  B     }
$ `- `+ b, K; E 7 j0 e: |% Q# m. Y; `% Y$ Z  g2 I
     public override byte[] GetStorage(string scriptHash, byte[] key)
; h8 x! @, S1 f; b9 _5 o( {4 D: U     {
3 d" _' d# [' E% N! ^2 }9 i8 h         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });( E) j  u- f  e4 H" x- m
         if (response == null)4 K  f. r6 y% |1 f0 o
         {' N4 u! w5 D- `* [4 }# I/ j
             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });
% g9 K* Z* }$ c! U2 ]             if (response == null)1 J1 h3 `2 C% C
             {
) P0 |* H% _4 r                 Debug.Log("Failed the QueryRPC");
7 E4 _, v" }# e8 b& M: _! s* D                 return null;
6 Z2 A& a% t+ l# x+ O3 F9 {' P1 w             }" k7 J3 g/ Y4 u1 f: X" p) K
         }) Z8 b* w( f" `5 p2 i  _: U9 ^
         var result = response.GetString("result");
0 u) K6 P' W% L3 ]         if (string.IsNullOrEmpty(result))) l3 H+ A+ L2 j! Q% J3 v
         {
. c: ^7 D2 [4 O( B+ P             return null;
9 g: P3 o8 p# t4 s1 R         }
! ^, a* A9 w6 P8 P/ H" n. [" L. x0 [         return result.HexToBytes();
$ J* a1 t3 X& f( A) \6 d     }+ e# {3 w- ]% x/ C! P
}
* }9 l/ Q0 R+ ~' W! @; o你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11