Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

卡哇伊嘉人
84 0 0
欢迎来到使用Unity游戏引擎制作的NEO区块链游戏的’A-Z’多系列讲解教程。我们将保证每个系列内容的简洁清晰,从而对整体的工作流程做出全面地演示说明。每个系列都与流程中的不同步骤相关联并会对相应流程做出处理,比如设置基本的游戏玩法,设置一个简单的测试服务器来连接Unity编辑器,设置编写NEO智能合约所需的开发环境,以及编写和测试简单的智能合约。某些内容我们会做出快速的讨论,有任何不清楚的地方,随时欢迎你发表评论,我很乐意为你解答。) M% [6 u7 R1 b7 y
; f+ V8 c6 m9 v" d9 o6 N, E
    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。
6 U9 O8 b- q3 q  v7 I3 {: |2 z- s7 T  a1 m/ u1 T% F# {: C2 r8 v& H
    生存射击" E$ g: [1 Q2 \3 M% \
; s- J9 N7 n' V+ T  R# z3 u# A
    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。: Z+ p  b+ F/ @2 g) e

& W; V5 |. h4 P    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。
( s% K4 o9 K; @, o1 Z
( j0 ?; c6 L& ]3 N: z; h! r    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。
" u2 _8 a/ v+ C: T& G( x$ Z0 U) Y2 M  {% y, y2 v# E
    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。
' }, n4 \' ]1 k8 Z, V7 y) m3 O
6 W" X. {0 p* s  d$ {# Y% K    双击_Complete-Gamescene对象打开…
3 F5 Q1 F- W" n, _  O: O
# v9 j7 Y; ?  F  n然后点击“播放”按钮来测试' g0 e, F& L! E9 K; x) s7 r$ C
设置NEO
4 P9 W2 n; o: n% c, r/ {要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。
) e5 `- l2 m( D. K" b" ?( @5 N/ F5 ^# y' r
然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。4 W" t1 l7 g* ~
连接到NEO! c; h9 U; L& g+ m) @
接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。
4 i% u( P7 f+ p0 ^/ Y右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:
) ?! n' C( d. y& e+ tusing Neo.Lux.Core;7 K& V) a% n, d  q
using Neo.Lux.Utils;
( z7 T4 U7 {5 S3 D( Y6 Lusing UnityEngine;; ?9 _0 P! {  ~% n2 q, v' Y6 M
. X. s/ G/ ^: q5 P/ a
public class CustomRPC : NeoRPC. r) c2 K, m2 H
{
- E; r2 @5 E1 X; u8 o  ^9 ~     private string nodeURL;6 [. \' ?& o. f; v% h$ F1 S

* G8 j, c9 a  C6 g     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())
! e) r; c$ O- h9 V9 F7 s4 c' m/ X- m3 ]     {
, w! E7 u/ W: _% h2 b- Y% M7 m         this.nodeURL = neoscanPortURL;7 c) ?# p, f$ W. q" s) d9 {2 z
     }
1 C$ C, z6 S5 v, n2 g7 h
( L' o* Y6 {" O! C; w     protected override string GetRPCEndpoint()
. Y. @; `6 E7 m- A( T, G6 @% n$ Q) e     {( `3 U# L4 {' f
         return $"{nodeURL}:{port}";6 P' f4 A8 _8 p9 c: @- \
     }
5 S6 _0 i- K$ j3 b% z, |, n0 g& K! A; L 4 H: @, \6 n5 a1 H8 ]
     public override byte[] GetStorage(string scriptHash, byte[] key)( ~5 p* A2 ]; r9 i: K1 [: f
     {, A- r8 c) p& q0 q$ K
         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });
% o& M( U* r/ q2 q: j: B         if (response == null)
( \. r$ W+ i* U6 y         {
; y( T- a; k# Q8 t3 Z             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });8 ]3 a" c2 G% j3 V
             if (response == null)
3 z$ K# P% B9 G/ T/ D2 q             {
) T- u. g( o1 j                 Debug.Log("Failed the QueryRPC");. C) s; w: s  [/ {- [
                 return null;
- B# O3 \9 f% r* w             }9 U( t& l. L" l' G9 \. r
         }
6 Z' n) J" i1 h# Z         var result = response.GetString("result");
' K4 p0 u" d" J; i* {8 A1 y         if (string.IsNullOrEmpty(result))
$ ~. C# H4 ?3 ~1 `0 q         {1 \; V5 Z6 I3 M5 H  \* f  g
             return null;, `; y9 T, p; z5 @" l0 ~
         }. |4 a  c8 ~& u# G
         return result.HexToBytes();( E; Q4 g' u, `$ k
     }, W; G) d/ {  n3 P. i! ^% W9 [- m
}
& A# o, v' S! @+ T你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11