Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

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

+ S) ?4 A, Y! t( ]0 }, O5 R    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。. m& r1 m+ \' b& k; [) d
( L& b# E* o; B: \
    生存射击
* N/ j) p2 q+ e% }2 X4 t( ?0 y3 S/ A7 N. v3 w% u; X7 F( G: I
    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。; q$ Q3 f4 p3 t/ y3 m0 t. i' f* ~$ a  L
5 C1 e; s1 A8 s3 e
    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。+ _) _+ b( e6 @3 G

# T, z$ K) C% `5 A. {9 [! I( w    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。1 p: F3 k' }0 r) R7 Q  _( V

- @5 H. l3 C# h    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。% K, G9 F" l2 J! x5 f

' }' C& Y/ ~. f, D1 {7 f    双击_Complete-Gamescene对象打开…
& D4 J# X2 s3 X# M* K2 H5 A* d+ `& c8 K# i+ V6 e, z3 C, q
然后点击“播放”按钮来测试. `0 J9 c! D$ N/ }" v
设置NEO) e0 [# _9 @% m! p; ~
要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。
: f6 v5 X2 d$ F$ J+ j. q7 S9 f- |8 [8 ~
然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。3 w8 G0 W, ]) J  _% B! q/ |2 ^! ]& w
连接到NEO8 K! u5 B, V" F! J* e) }* v
接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。7 Y7 `; A. r' l' n+ O
右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:& P) A; f# V+ _
using Neo.Lux.Core;
0 |( V5 V: P! h% ousing Neo.Lux.Utils;; Y- T/ s! ]5 k- G; ?+ j6 x/ W/ j- x
using UnityEngine;
5 l+ B  n# F! |+ F. I% b1 L
1 M" E  i1 ~+ p* K8 B public class CustomRPC : NeoRPC" D! S8 {/ v5 h1 X
{
2 w; `% E. Q" G( I( N/ Q  n) a     private string nodeURL;
7 \* [+ o( q7 d4 w 4 f% Q5 S# D# I1 J% L! m
     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())! ^& S8 [0 E/ `, G9 D
     {, q+ T8 x6 E! q( Z3 z! ^: K( |
         this.nodeURL = neoscanPortURL;
# \- V4 s! p* I4 y" f& }     }
, Y. P! u& L9 n& d
" e% Y7 }& U, K/ C3 \9 T/ H  X) S     protected override string GetRPCEndpoint()
: B! ?/ e8 q1 K9 b$ S9 O3 T     {$ J: h% }2 Y2 C, D- z
         return $"{nodeURL}:{port}";
. N6 @7 z( J2 c     }% d9 X: j# e# }! E
- O: q" V; S9 \. P0 n2 I
     public override byte[] GetStorage(string scriptHash, byte[] key)
& \5 @9 ~1 X. ]( r1 Q/ F9 y     {
7 U2 @( I3 B2 W         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });
. l# ]2 O0 C7 z1 X         if (response == null)9 w* f* @  e0 y: R1 g$ z) f) E
         {, H4 P) N; Z2 `
             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });
2 f7 K1 d. G% k7 v" h: m. N# Z1 g             if (response == null)
! A# Q6 N! F/ x" o             {: R+ b; L: x! K0 v* f* J
                 Debug.Log("Failed the QueryRPC");; l7 T+ y+ S: Q4 z7 ]! [
                 return null;5 L5 G' J% J& h) m% y+ H. d
             }- r0 x' @1 v$ P) t# h( k; z
         }
  ]5 S6 _. b( s" J, R9 S2 E/ r         var result = response.GetString("result");: @$ W7 k: r* U2 o/ I! Z- B* a4 h
         if (string.IsNullOrEmpty(result))2 u7 e% |: R  B; y3 \( [' U$ s" s4 Q1 C
         {4 I0 O# U- a1 W5 f
             return null;
. h, C7 K. i( E' l) f! D1 m9 q         }
9 \* k, d7 q2 ?' |! S/ \/ m( }- ~         return result.HexToBytes();
' m( \/ M/ a+ v) U: ~     }
+ U6 C1 o$ [% I' ^+ S: u }
& f# Z, \% b+ _; T. l( X# V2 [2 @你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11