Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

卡哇伊嘉人
141 0 0
欢迎来到使用Unity游戏引擎制作的NEO区块链游戏的’A-Z’多系列讲解教程。我们将保证每个系列内容的简洁清晰,从而对整体的工作流程做出全面地演示说明。每个系列都与流程中的不同步骤相关联并会对相应流程做出处理,比如设置基本的游戏玩法,设置一个简单的测试服务器来连接Unity编辑器,设置编写NEO智能合约所需的开发环境,以及编写和测试简单的智能合约。某些内容我们会做出快速的讨论,有任何不清楚的地方,随时欢迎你发表评论,我很乐意为你解答。
+ e, d# c& x# A' |' @" T/ Y6 y
5 j" ]: X- `) R" R6 H# X    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。
) n0 V7 I! m/ i% d) V- q" L
% G6 S1 {: I3 i% ?* T    生存射击
% m3 c" n: T/ F5 O/ c" O
  s7 i. l- z" ^    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。
& h" R1 `5 Q! l0 Y1 O6 p: R5 c  x5 O4 [+ q! c3 u
    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。
$ Q4 M. }/ x8 q* {" t5 Q. Y& L
. e, ^4 n8 j/ A    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。* p1 Z& o: l7 b0 K, X0 ^

  W0 A2 H& @+ ^: s* Z* I    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。
* G6 R* J: K0 Y) J1 A; i8 L3 D7 S% R( [! |0 V! p8 f. s5 y2 J
    双击_Complete-Gamescene对象打开…( c- {9 a" P5 f; g# [2 J
1 Q. o3 V. \0 k$ }5 I
然后点击“播放”按钮来测试
6 j. R( F& i3 P8 S设置NEO# C" ]# ]* n: h5 @
要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。
- L7 m! E$ R  x* i5 T  w6 ~0 h& X: U* N8 Z. A/ M
然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。+ ?" T, ]2 d: O5 _
连接到NEO
/ u# g  ]1 {" z接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。) g. T/ v1 p: a' b7 U: r
右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:% n% y, q8 ^5 U7 W9 i
using Neo.Lux.Core;5 u, `4 S5 |; f4 p' ?1 e
using Neo.Lux.Utils;1 n6 @' {2 s. G( b0 P# a5 Q1 p
using UnityEngine;
" R" ~! i/ w' H0 }1 B0 n
" X9 c% s5 U3 j: E public class CustomRPC : NeoRPC6 \" l9 ~/ I% H4 c& {
{7 P' N! k1 v/ ]6 Z7 X
     private string nodeURL;
5 j  Q$ m, x; ]; ~  t% `  Y
; x) P4 W5 r' n. r* B# C: h     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())
- P; g' w% v/ W# I     {
# Q: m# o( e, G! T7 C         this.nodeURL = neoscanPortURL;
. ?, E! k) W0 Q( n* u. [     }
* s% {* D0 |( Y  Q2 M. u: L) f
8 @( y5 Z: ~, ~: }+ u# u- ~5 ?     protected override string GetRPCEndpoint()
' Q+ i4 r$ T! E& o     {, u. X4 r' b7 y7 y
         return $"{nodeURL}:{port}";, d0 Z0 g  o% M9 V' W0 k+ I8 X
     }  z- ?# n5 `8 E6 B( o5 g

: n$ w  B% c( j2 m+ H. U     public override byte[] GetStorage(string scriptHash, byte[] key)
; u" v4 W/ S: i9 i" D5 E7 U3 t. J     {
7 ]$ k* M# `0 P# W1 Z3 O- ^         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });% J  X) S1 V$ |# T
         if (response == null)
8 q$ x5 j, A5 ^6 e         {
; R" n' K8 [8 y             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });2 o( w' B' d* d4 Q  ~" I7 j
             if (response == null)$ S7 k5 ~" E$ l7 R' b
             {, i0 Z* O2 {: _* b
                 Debug.Log("Failed the QueryRPC");$ h; C3 a8 c, @2 w6 |3 ?# B
                 return null;
3 `! d; m; ?: _/ C+ f0 a7 |             }
) N) k1 q9 W) {2 v7 _, e2 I2 c         }3 H: Z) |  `! |. S6 z
         var result = response.GetString("result");# L" G! `- E# `4 Q3 i
         if (string.IsNullOrEmpty(result))4 X; k- T; z5 G; a3 `8 y5 c
         {; w  m$ E0 D; N& Y
             return null;
  i2 y% d7 O. i) H& }' V         }
9 M' W) d5 a5 [- C; B( }# S         return result.HexToBytes();3 t( N" M  X$ t5 B% N& S
     }
& j' H! n/ u4 A" D6 j! M) `$ D }
  d/ h3 `) p1 x9 G/ g, }6 ?你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11