Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

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

  T( l& S/ v5 D3 c8 Q% \    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。
- h/ a  G9 `* }$ W3 C- ?9 Q7 A. z& B/ }  c- t5 A" ^+ G2 m8 n  l
    生存射击; q7 A$ o- ?( |" d9 m" l" J* _1 J
" M. G/ z$ X: U& |% _6 N1 p) H
    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。" }  H5 j5 j& i, ~) b
& ^3 @7 s" r% M) n5 {3 W% W
    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。
1 p6 _5 a3 ?. N3 Q+ \% c
/ D* u1 d) H7 L+ e" C/ O$ H    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。
7 v! K8 [$ m1 t0 Q5 T7 @7 j
9 @0 V, `. W. t+ _, A/ t    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。4 N  }7 q6 F3 P# ^& |, i
. {* t- k: M, |  f& R# B/ A
    双击_Complete-Gamescene对象打开…
' ~  u& a5 s3 S- q7 t* Z4 y8 _: o7 m8 h; Z; b. g9 y  k
然后点击“播放”按钮来测试
3 C9 \3 e' r0 P3 A% G( e8 P; C" h设置NEO
+ R+ c3 X% P+ f# i* U7 o要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。  E- M5 T# J; i" ~1 u( W  F& U* \2 \! q
, G; _: k9 R; ^3 X# a( ~
然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。
+ `4 z% [% k6 D, F( C/ R9 c连接到NEO2 H1 P' O; x9 D
接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。8 W6 W( @# s3 i9 t  r, N$ s! P
右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:
6 s" @) P: D% C1 Y& N8 [using Neo.Lux.Core;& {! n1 C* R$ B8 d- B. b$ B* N
using Neo.Lux.Utils;: K8 m5 [# z1 `  S/ ?
using UnityEngine;4 u- e- P/ G& Y' Y* S

( O* U! g' t/ x; R5 y4 z) G6 U% M: n public class CustomRPC : NeoRPC) q+ e4 K; V5 W6 j% e
{( W6 T' D0 d/ F2 p6 `% o8 m7 x: q
     private string nodeURL;
( [# }* K' C( |' e' ?# L 0 m8 e1 R$ O. r5 D/ d$ B$ j
     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())4 P* i' b& m4 G- K* m% [
     {
4 E- |) b6 S. ?! [4 `         this.nodeURL = neoscanPortURL;
7 c! {! y9 I+ I+ T; y4 x! k& a     }
; a' I% e+ z+ j3 e/ Q, \1 |: Y
6 Y! ?5 |" |) ^' F8 x     protected override string GetRPCEndpoint()3 n! m9 @7 M% g; v
     {5 T5 H9 i4 P* g% I. z
         return $"{nodeURL}:{port}";
! ^" w6 P2 }% X& g3 s     }# i$ w3 T- p" H  x
2 Y/ |/ Q' T7 u6 V
     public override byte[] GetStorage(string scriptHash, byte[] key)
2 \( }) A1 w7 L     {
! q) O% z+ m; q9 Y6 d% Z. B         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });2 E6 F7 M* X; s; ?3 j7 c
         if (response == null)" W- q/ m0 n( Y1 ^, L
         {
. {# U/ q1 g# Q             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });
# o7 C: d9 c1 x, J/ r! Z9 _7 ]             if (response == null)
5 h. {' \  c* ~6 y             {
! s- w- n* |, r0 {; {4 W) o/ h                 Debug.Log("Failed the QueryRPC");/ P- m8 q! q- m. e+ B
                 return null;( |% ~4 d* [/ D
             }
) K5 `6 ~7 Y  G# [! v0 V' O# T% k         }7 s# `' _5 s5 Q" |2 _5 I
         var result = response.GetString("result");
. {) T& c* N% N         if (string.IsNullOrEmpty(result))
, X1 z" F7 I% Z0 X         {5 H) t* g4 c% j) b) v3 R, {. p
             return null;
/ O8 w: p$ F$ R2 k         }
% X" G+ l: L6 N% w( i+ j         return result.HexToBytes();
: ?1 V# ?$ k: T5 w4 W* k     }& p; q. |8 F; D6 f2 D  V
}
) {1 r, y4 c) t: R. ^& g5 e你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11