Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

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

! d4 O, j0 b- w    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。; k+ a$ e1 ^! [, X

, h) j: Q6 X) j4 \    生存射击
4 z: e: m5 C& U5 F2 g' H* U4 J" [; m* j" C- [* j$ K! N  X
    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。
, M4 c4 j# \  o
! E. a# \0 z/ m% }0 `  m( X    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。
2 t! X$ E+ q8 H
4 W  k1 W, e$ m  P9 x; \  a, h0 D    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。+ L/ Q, T8 ^6 V# G5 ]: z8 |" j; u
$ D- _) D7 f& l4 ^! g" r: Q" o
    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。) G! E$ T2 }9 i1 q$ w& e: M

% z7 n5 |! m; {4 u% g    双击_Complete-Gamescene对象打开…0 m* a$ L! w: Y# P; [4 N
) q' d3 U4 }) K! M% O
然后点击“播放”按钮来测试
$ e0 H1 }4 v1 |! m1 O: O6 [+ ]8 J5 g设置NEO
: k: f' n* @. m9 q要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。% F. {5 u% ^+ ~+ K: I
0 G. G4 O2 d1 @3 e
然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。
& K+ d: a/ Z# h6 p* n7 a& W2 h6 s连接到NEO
/ r) p: J9 K' m4 f# K$ Z接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。
( m' B  b6 R& U& d1 y: e0 M6 J右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:
, X* U8 }! ?# D3 {5 qusing Neo.Lux.Core;( Z- Z; h$ E( E* _# v$ H
using Neo.Lux.Utils;
7 B$ ^& S% {' f! G  ^* H; vusing UnityEngine;
4 j' v5 \3 T- P* a) M) m4 A, E5 f 2 C. p& _2 d; B/ J6 N
public class CustomRPC : NeoRPC% W7 B3 Y* Q( N  n
{
' ^/ F: I7 x2 d5 ~- f- g. }. d     private string nodeURL;$ S/ _1 a4 P$ i$ u* x

+ G7 d( x( |- M7 G4 I+ W     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())$ `; M) ^0 m2 Z" T9 y% q. Q# A
     {
6 Y8 P/ ]  `. f9 ?/ E1 W  h, [: R& w         this.nodeURL = neoscanPortURL;
5 _! P9 ?$ [  e, g# m( D8 W     }4 S4 ]9 u9 v2 g( |4 x6 o
* A2 A) ~# @5 c
     protected override string GetRPCEndpoint()
. L, k# G$ V5 z     {+ w1 V* Q# i' V3 l0 \& d( U
         return $"{nodeURL}:{port}";5 X# `1 k/ C( i$ w
     }
8 ?0 j5 a5 Y5 X( C$ U3 Z ' f3 W/ p0 E4 F; y# o2 d! j* [7 e/ }
     public override byte[] GetStorage(string scriptHash, byte[] key)
) E2 S& b* [1 W8 j5 ^) d5 R; U9 Q     {# I1 P, X: M# z6 n" o
         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });
9 T: T8 Z" S3 y  C         if (response == null)2 B! y7 l$ a6 H# F! e) n! s
         {
9 W8 |# q. D% D             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });) w5 e; G5 F8 z& n1 c
             if (response == null). Q) A" Y3 Z8 {1 r
             {$ h% J  Y, b- G# N) J  r
                 Debug.Log("Failed the QueryRPC");
6 |6 Y7 K8 ]9 `; F5 R; w6 ~6 T                 return null;% n/ b' V: a. ~  G+ U4 T0 Y1 [: p
             }: m( {9 Z, w; v2 X7 C8 G$ P& W
         }* i( N( W  `, {7 U' z
         var result = response.GetString("result");
% z: |$ L& `2 m         if (string.IsNullOrEmpty(result))
, M5 c+ s  ]/ O9 v! |' s9 I         {4 L# @- N* G6 y: j' q+ o' c
             return null;
: S: ^9 ?) @# g. h         }$ T4 g& Q# q$ g3 l4 a+ A
         return result.HexToBytes();
- m9 J; P0 U+ R! G. x8 F     }
- o: n3 {) X! u) @ }
! n1 C8 O+ m# w( `4 k3 q* [' e你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11