Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

卡哇伊嘉人
86 0 0
欢迎来到使用Unity游戏引擎制作的NEO区块链游戏的’A-Z’多系列讲解教程。我们将保证每个系列内容的简洁清晰,从而对整体的工作流程做出全面地演示说明。每个系列都与流程中的不同步骤相关联并会对相应流程做出处理,比如设置基本的游戏玩法,设置一个简单的测试服务器来连接Unity编辑器,设置编写NEO智能合约所需的开发环境,以及编写和测试简单的智能合约。某些内容我们会做出快速的讨论,有任何不清楚的地方,随时欢迎你发表评论,我很乐意为你解答。
, w5 N6 F+ w' @4 o% ~$ I3 U; c0 v2 E( k2 k! R3 T8 Y% o3 R! O
    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。' ^8 p6 V  H8 o: {5 R2 N
9 F. B( x; y) y
    生存射击" Q" L+ Y+ }. ^# L& f6 k$ w' J

8 c0 ~7 Y' F( v# w2 G! s. H    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。, Z, x' F! w! p- S) i

7 z9 y( E5 I8 `) |) A6 M    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。
8 Y9 E6 @0 ]" j; l% g5 [8 ~
( g+ O( z, k2 V' t) G( m    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。+ L$ [+ w" ]. I! @( i: s% t

& \0 q' K. Y, V! u) h* [    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。- ], b& }/ L9 Z
, l, o5 C6 I) F0 a8 S+ _# A2 _* o  l9 {
    双击_Complete-Gamescene对象打开…. X& D3 n$ d4 `
3 M8 G; x" S! p
然后点击“播放”按钮来测试6 k$ n# C' E5 F2 O
设置NEO* C1 B9 `4 \; j0 @2 v5 v% D
要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。! v3 y7 F4 P8 {: r7 ]

. Z2 f. i: h& @然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。
, A$ X  T$ f+ X4 U8 Y连接到NEO: X8 {( A* G  q! i: I( C
接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。
$ W* u1 D2 _; q3 ]6 w右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:
' ^2 r1 K1 |  Y0 {7 }5 e/ Musing Neo.Lux.Core;
( P0 o# C# g( Y2 o- L6 U4 X4 |using Neo.Lux.Utils;1 {" K7 R) N6 w8 r1 I9 h
using UnityEngine;, [. D, l2 c1 @3 K
4 K$ F$ v+ f2 S6 B0 x" Z  r
public class CustomRPC : NeoRPC
3 q8 G4 `+ g3 U; o {! f' O, M7 ~# F- X$ I2 o% z/ y
     private string nodeURL;
% K# R' l! \% l 3 J0 L# N. P% Q! L8 o3 `7 V5 E- y
     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())
4 g8 s' f6 C! x, R4 h, R     {
7 H5 O% X$ t! T& C         this.nodeURL = neoscanPortURL;$ Q- W; H/ e7 s* o
     }2 \4 ~! A  _# x2 _$ o8 \  G) \

  P, P" ~! Z6 }$ d' g     protected override string GetRPCEndpoint()( _* X* o1 K: D, M, d
     {" Q% f5 Z5 r6 L
         return $"{nodeURL}:{port}";+ N& X4 H/ {: P6 e  ~# o' A9 F
     }  z6 N  q: ~" c! c

' d* x, h8 f( C# _  P     public override byte[] GetStorage(string scriptHash, byte[] key)3 y' a6 y" s( P2 g
     {
, T& H* \& p% |' l( u4 O         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });& _1 g2 E, d' {) x4 `+ P+ ?0 K3 |7 H
         if (response == null)
8 ~3 ^9 [7 d5 m5 Q4 m         {
' U" n4 l8 d* S1 A/ E4 o1 I7 R             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });; ?; \; H3 \1 [) @7 {3 Q, s
             if (response == null)
  i4 d* }, z/ q0 S             {, s* D7 R0 S6 h/ _) k! P
                 Debug.Log("Failed the QueryRPC");0 I7 u) D" O4 k3 j' ^2 m% N3 [# e( I
                 return null;
. w/ d1 O0 A8 t& H& w             }1 S" I8 {  X0 r6 `
         }/ Z6 H6 }$ O" l6 G, H. x5 Y9 U
         var result = response.GetString("result");
" A( x$ L. A* n$ Y! V7 f/ u1 H         if (string.IsNullOrEmpty(result))
* y. W& v( y5 j( b         {
! H* E( k+ P8 J) P8 K- ~) l2 ^             return null;, Z& Q, ]( }5 ~
         }, k1 Q$ C& @+ ]9 w) B5 Y. P
         return result.HexToBytes();/ d9 J9 m0 h9 s0 r  }
     }" r/ G6 `9 O+ v. e- u" p# R
}
9 h. d8 k5 A* U0 d8 ^+ `# q9 A5 s你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11