Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

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

' F. y1 L' K% q, h5 g" o9 G    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。* _- v* N: z) }! n) X
; [( t; T0 p, T4 Q0 j8 d9 ?) |
    生存射击
) _( N4 c! R( v7 X  e9 T2 H$ K# Z8 m- r3 d& C0 U
    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。$ g) l% S" t1 {9 N

8 Z- z7 |8 T0 [/ H# k- a! s/ Z    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。" @9 M# C8 y2 F& r4 M
" Z6 a9 W* _7 E& t( T
    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。; s/ D, U6 B8 k( V9 F
/ i& x' V4 b) ?2 \! W/ W$ O
    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。9 b! H! H- k& i/ K

6 i2 t2 @: i, Y: ]1 p3 {, @  i    双击_Complete-Gamescene对象打开…
. O2 w; `$ H( ?; z2 Y+ F7 Q+ V8 }/ }
然后点击“播放”按钮来测试
  ?- _7 W/ u5 D- {- Y设置NEO
' n2 i6 _: X3 z- z/ {要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。
$ j) Y3 Z* l* S; j- k/ M' o) k( Q1 i6 Y% R& H% w, m8 H3 c
然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。
+ j' ^( R2 G; e+ X' N2 z连接到NEO8 s9 y6 }! R7 v* I$ x: W5 j
接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。5 s/ w5 C' Z" _7 v7 n+ A* j* i
右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:
$ x  ]  |6 ~. w2 S/ Yusing Neo.Lux.Core;
  i1 w. |3 z& \6 w5 Pusing Neo.Lux.Utils;
4 o5 B) f: J5 Ausing UnityEngine;" v( T' u6 v, s6 z, _: [

6 V. q0 D: y" b1 M5 u1 {+ v1 n public class CustomRPC : NeoRPC
: M+ k* A5 x8 u* T( g0 O {5 f' ?9 E% V- W
     private string nodeURL;
: c- ^7 P' G) O
4 a& ~( Y& j1 e& n6 B     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())
; s: E  w9 u8 g& V  M, l     {
) w+ Y: {' g  W( A# z& Q         this.nodeURL = neoscanPortURL;
. u7 z% }- h+ E! s: K% W     }1 U0 k! G9 |$ i  ^" ?+ x
0 {5 T& K4 p7 E$ }
     protected override string GetRPCEndpoint()- M3 _/ D% \; w6 k! ~( m* b
     {2 E  w* y4 l3 v0 T6 J
         return $"{nodeURL}:{port}";
( o5 Y. a. D& k: S     }( i0 m- z- b* s0 y0 e
) `7 C9 k! {/ o$ E* I3 W
     public override byte[] GetStorage(string scriptHash, byte[] key)
, T- F; ^8 n# ]" {0 t9 D     {
/ A6 ]1 {1 |8 J  }- v" ^         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });& o" s9 M6 i& L7 v6 j' S9 P& G0 F2 f9 N
         if (response == null)3 I/ s2 E% i9 `  o2 w. X
         {3 }2 i) ^) |# S( Z' E
             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });7 ?: S/ o6 I* q- G
             if (response == null)
1 Z9 G! ?# G" j" r* G3 ?" ^. `3 l             {
0 _* ]* b7 D4 d' W1 a3 k                 Debug.Log("Failed the QueryRPC");7 X0 J8 ?% q* O9 ?, e# k9 f
                 return null;2 p* h. W3 M7 _# h
             }
5 I  m" f: S, `         }5 g! ]' I; p# {1 t5 w, z3 J3 R) w
         var result = response.GetString("result");
* I0 X  ~$ `! r' E' x$ o         if (string.IsNullOrEmpty(result))
" Z; p# _5 e* q& f: D: A' l         {/ D0 b+ _2 }. `! J: J; x
             return null;
2 i1 _1 i8 x, F4 U0 R/ i$ W         }* X% C, _$ C) [6 k- W0 v, W& z
         return result.HexToBytes();
& V$ u: I1 R+ \$ ]     }- \, @8 b6 [% m' d* z0 V
}
9 Y* o2 Y) t9 f( ?* W: P你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11