Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

卡哇伊嘉人
138 0 0
欢迎来到使用Unity游戏引擎制作的NEO区块链游戏的’A-Z’多系列讲解教程。我们将保证每个系列内容的简洁清晰,从而对整体的工作流程做出全面地演示说明。每个系列都与流程中的不同步骤相关联并会对相应流程做出处理,比如设置基本的游戏玩法,设置一个简单的测试服务器来连接Unity编辑器,设置编写NEO智能合约所需的开发环境,以及编写和测试简单的智能合约。某些内容我们会做出快速的讨论,有任何不清楚的地方,随时欢迎你发表评论,我很乐意为你解答。
7 K, M% M# o7 T% H3 w
* U+ I6 r: \' t7 V) O    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。
+ L3 V. C3 h0 o# A( ~0 z( k% h2 f$ G! _; U
    生存射击
  h5 o* |, D1 z% {# |% ]- d1 |; [! d1 t3 \6 M+ d2 s
    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。- w% Q! l& m" F- s* Y5 d# H, v

5 A- r: {& I. q$ Q, N: V0 d    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。2 g# L3 P1 |+ `# {

7 i5 o+ W! s* C( i. Y1 F; a7 D    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。
4 ]* T& v0 O  Z7 l) `+ i+ A6 O" \+ k; {4 S
    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。7 E! [& ?/ l/ _) E7 J+ A( S& I
0 s. m/ U! {2 b: q' g
    双击_Complete-Gamescene对象打开…
! O6 F( a- V/ R, `3 p# f( [- Z6 l% J+ A& y
然后点击“播放”按钮来测试  v! j# I& |) g  x8 {6 Q% p
设置NEO
/ K+ J) c. U4 v8 N; g要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。2 G/ ^/ o$ p+ {: }5 n- S) m
. l% }! A0 r: M
然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。
/ P( A, x) s7 F) g连接到NEO5 [( m3 j% S+ I& b( |
接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。
9 D) P4 ?4 C; L1 S右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:
5 @& z+ i' k& n: u. J; vusing Neo.Lux.Core;1 k9 p6 h6 j: ?% i% z, n, R3 Y" X$ }& H
using Neo.Lux.Utils;  g' a$ S2 E) r9 O8 v
using UnityEngine;
1 ^3 k2 s3 @. M+ _ ' }$ U; Z8 t. ]! |7 H) H- V4 C
public class CustomRPC : NeoRPC
6 A8 }: K& O/ F8 r, ` {
  S1 {+ Q# y! G$ b     private string nodeURL;
5 q' M9 O* }; ^! p9 x
6 [5 w% w) g' Y7 d     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())
7 ]* Z9 w0 n+ H! C) L1 T5 B     {8 |6 p+ c# u2 Q1 Z: D
         this.nodeURL = neoscanPortURL;; S* `1 S9 t% p: j
     }* D  h: u. K& K6 M  V
% b8 c1 T* T" `+ K/ |* T! s  L
     protected override string GetRPCEndpoint()' s/ S, n7 }3 s4 k" Y) t) G
     {
8 y+ Z8 H. J* ~7 z         return $"{nodeURL}:{port}";
+ K! {) i8 p# r) X4 L/ Y" V     }9 G6 ^0 M$ x- R5 A8 ?% T4 c
$ M& }' k3 Q3 I
     public override byte[] GetStorage(string scriptHash, byte[] key). P; n" u" l6 \5 h
     {
3 s3 y- \' ^. {( m& E         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });
0 `: X0 F' W5 f         if (response == null)+ G: S) k9 T# h
         {2 `; \1 }+ t# T6 h! x7 e5 H
             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });
6 H; M2 d3 ?2 n             if (response == null). E6 `' Z# y5 u" \5 ~
             {7 j% |6 Q' P; _. N3 X
                 Debug.Log("Failed the QueryRPC");
+ h  R0 \! M9 @5 {) G% `                 return null;$ f* ]* |2 }% n; x  k6 X# J
             }
( A: k/ U+ H+ a6 V9 a* L& L2 ~8 u         }
& Z2 K) ~$ M8 }* C0 [         var result = response.GetString("result");
- Z. W+ `' ]  D& F# B         if (string.IsNullOrEmpty(result))
' c! u) V5 h* {9 t/ ?; G         {
0 E: X3 g* T+ [             return null;) C4 @3 x1 c: L
         }6 h- V3 G" S1 k& O
         return result.HexToBytes();& O3 }' [+ L1 u  P( E$ h% P6 ~4 U
     }
7 v6 W. r: G! @; O }6 U3 x; a) U9 E6 L# Z' K7 g
你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11