Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

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

6 i- t6 G2 Y1 y6 z* `3 g/ v. `, L5 r    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。* {6 Z/ y6 V0 P1 `, ?
, H, z" l$ o$ }7 ^+ D7 K: L8 |
    生存射击# x: G" [1 d+ K' K1 `2 k
# s4 I4 ]4 }% _. F6 W: ~
    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。
! n/ C2 B- ?# w
" m) U1 W( {$ l9 G4 ^# D    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。
6 r3 u0 I7 o+ L/ E  D
7 Z) l5 p$ S: N& N. W! z    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。) x" V- K/ @7 y/ {2 p+ I
5 L7 c8 x, w) S& ]
    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。! q  k& I( w( {7 [* e
3 k* O' _9 c7 Q9 M' V
    双击_Complete-Gamescene对象打开…
1 d9 p" D2 w: Z( {4 G, D6 k
2 t) t  g, `1 W& R3 U3 v! @然后点击“播放”按钮来测试
( E  v# s( E# q( K4 f设置NEO
# ?* X' o1 O& ^2 R要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。
" F& M4 H3 ~6 `0 M: i6 n" H
0 j# q9 s1 F, d+ o( I- z/ r& T3 {然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。
# z. @  A' r0 c. Q* w连接到NEO# y9 w, U0 X; [
接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。
' n2 U: R6 t- n8 b右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:
3 _( X6 W) M0 h0 cusing Neo.Lux.Core;1 d0 T. F0 D/ C1 u4 Z1 E" y. E
using Neo.Lux.Utils;: _: O4 i0 h# @
using UnityEngine;
' W2 [9 Q9 F9 i- Z# Z
* ]' F+ [: o/ S+ r- h6 l public class CustomRPC : NeoRPC
: H7 ^. y6 k/ K$ j {4 m4 l+ p$ b7 k2 ^
     private string nodeURL;
& ]8 G# X0 _" H) B
9 u8 g  e# g' k; f. i- q, _     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())
3 u: ]) {1 i3 }' \+ W     {
; p4 k* o4 A/ n7 d3 x6 _         this.nodeURL = neoscanPortURL;
! _" ]6 z; H" o: Z; F     }
- ^7 K; }! d* J# m' U* B % o8 O9 o  `. K% I: q" ]* E
     protected override string GetRPCEndpoint()
6 j9 D; n" I6 t* O     {
$ E- v) t5 r* e7 p         return $"{nodeURL}:{port}";' e/ J- L0 V7 a+ P/ e: x
     }
6 E# h6 z) U/ j5 K5 t+ Z  P 1 L5 H7 y/ g5 V; A7 f
     public override byte[] GetStorage(string scriptHash, byte[] key)% k7 d8 G! C' r+ a* P4 }
     {0 x. y; Z5 H+ r  e
         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });
; V3 k  ^; D8 D2 W0 E* a7 a         if (response == null)
) L, e0 r" Q+ |8 _         {
- p" K4 ~( N0 E6 r             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });
* x, H3 c$ T7 m! S* A& o             if (response == null)  K- c+ g2 j! ~
             {" t  ^- `, U8 p$ B2 l2 _
                 Debug.Log("Failed the QueryRPC");! j1 Q! ?  f* ~3 \6 c
                 return null;% O7 p  \, |  R. E- E
             }" N/ Z0 t6 j5 d! d6 @
         }  J( f; g: R. p* p% o6 r8 z
         var result = response.GetString("result");/ j' s) Z2 g! y+ a/ H9 H% ?; [. d1 ~
         if (string.IsNullOrEmpty(result))
. E  |: j0 r7 ~/ B8 K         {
  B# _$ W: ~2 Y- D: K             return null;
6 O# C9 Q& Y7 [3 V, Z         }1 X+ g: e1 A) l8 r+ s' q
         return result.HexToBytes();
& e( {) a8 g' R6 l( o     }( Q5 T2 n2 \) ^1 i9 v. t/ g
}* N- f+ m6 |/ L( D8 @( D6 I6 Q+ V" {
你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11