Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

卡哇伊嘉人
99 0 0
欢迎来到使用Unity游戏引擎制作的NEO区块链游戏的’A-Z’多系列讲解教程。我们将保证每个系列内容的简洁清晰,从而对整体的工作流程做出全面地演示说明。每个系列都与流程中的不同步骤相关联并会对相应流程做出处理,比如设置基本的游戏玩法,设置一个简单的测试服务器来连接Unity编辑器,设置编写NEO智能合约所需的开发环境,以及编写和测试简单的智能合约。某些内容我们会做出快速的讨论,有任何不清楚的地方,随时欢迎你发表评论,我很乐意为你解答。' |$ ^$ K& |; a! U
7 J0 _+ `. `% R8 n. s
    我会在Mac系统上操作,这其中会存在一些问题,我会(希望记得)在本教程加以介绍。对于Windows用户来说,这个过程应该会更简单直接一些,我会介绍一些现有的示例。到本教程结束时,你应该已经具备了足够的专业知识,而且可以避免我之前遇到过的那些陷阱,从而能够开始创建你自己的项目了。% Z. m, r- o4 q$ u' a2 C- ~0 `# w
. B  N/ U* S8 W
    生存射击
( C9 P( W! ^4 ?3 S% s$ a
  \. o! K+ i: c5 U3 T: K5 f7 r& ?( ^    我们将利用Unity的生存射击(SurvivalShooter)教程和相关的示例项目进行讲解,因为对于初学者来说,这是非常好的得入门示例。你可以下载示例项目,然后添加额外的区块链内容,如果你想更深入地学习Unity,已经有很多很好的相关学习教程了。对于那些已经熟悉Unity的人,可以只关注这个示例。
( \  B( u- f" w2 x% b( m2 o! z8 ^$ T- L, E6 v+ F: h
    所以,到https://unity3d.com/上下载最新版本的编辑器。运行编辑器并创建一个新项目——我们将其称为SurvivalShooterTutorial。不用担心各种花哨的设置选项,因为之后我们会导入一个包,它会覆盖所有的这些设置。
; P, b! V( @% V: s' i  X% b! F
! I- p1 ?( D6 `/ |) P    单击菜单选项窗口(Window)–>通用(General)–>资产存储(AssetStore)并搜索SurvivalShooterTutorial。选择它然后单击下载(Download),然后单击导入(Import)。  L* ~1 ?! c3 b) M
& j9 _" \% T9 e. N. r( L; N# r
    哇,你已经创建了一个游戏!在项目窗口(ProjectWindow)中打开主场景资产(Assets)->_Complete-Game–>_Complete-Game(scene),然后点击播放(Play)按钮以查看它的实际效果。你可以使用键盘上的WASD键移动并使用鼠标进行瞄准和射击。
4 |/ n# g" L5 o: R# h1 X. g# J% V( t! {# a! `; M
    双击_Complete-Gamescene对象打开…, Y( I5 F: r/ F' `' a/ r7 [, z
5 ?% J0 U# H! J
然后点击“播放”按钮来测试6 P- g* q7 d; ^5 Z: R, U+ B: _. U
设置NEO
0 W+ Q5 w& |& y- O$ n要开始使用NEO区块链,我们需要进行更多的设置。我们用于与NEO区块链交互的插件需要更新版本的微软.NET框架,而不是Unity中默认设置的版本。转到 编辑 (Edit)- >项目设置 (Project Settings)- >播放器 (Player),然后在 其他设置 (Other Settings)下将 脚本运行时版本(Scripting Runtime Version)设置为.NET 4.x Equivalent。 你会看到一个弹出窗口,要求重新启动编辑器,继续并接受从而重启。
/ Y4 w! ~. F( L4 n
# T9 U2 X7 r: l, V! {! ]然后获取City of Zion (CoZ) 团队提供的NEO Lux Unity插件,CoZ是一个独立的、国际化的开源开发者团队,致力于智能经济的开发,他们整合了一些奇妙的、易于使用的工具,用于与NEO区块链进行交互。下载完软件包后,只需双击它,就可以将其导入到现在打开着的Unity项目中。耶,我们的Unity初始设置就已经完成了。
! `% i! K9 W. F( S6 B连接到NEO
1 Z  A, F: E  Y' @$ d接下来,我们需要让我们的Unity应用程序与NEO区块链进行通信。在本教程中,我们会运行我们自己的私有服务器,因为根据我自己的经验,使用官方的测试网比运行自己的服务器困难得多(例如,需要填写申请测试GAS的表单)。( u% _# B" M  w1 U  z8 r# y/ u
右键单击 资产(Assets) – > 脚本(Scripts),然后选择 创建(Create) – > C#脚本( Script), 将其命名为CustomRPC,然后双击打开它,并复制+粘贴以下代码:
, k& m0 i9 I6 X) ^( x; j) uusing Neo.Lux.Core;2 c  ]4 s4 m* n3 A+ b$ `
using Neo.Lux.Utils;2 D/ H) O4 ^3 W9 d6 Q; K9 ?
using UnityEngine;1 g. U/ W& E5 B* A+ n; o
# k3 M" b) g. d4 _
public class CustomRPC : NeoRPC
; z; Z9 K2 n- |0 I3 o3 ?8 t! B {
$ Q1 l- q1 W0 z     private string nodeURL;
0 h$ `& N, e  |6 B. X5 T
! D3 U/ r, w& G, N+ i8 F0 e     public CustomRPC(int port, int neoScanPort, string neoscanPortURL) : base(port, neoscanPortURL + ":" + neoScanPort.ToString())
( s. f) S6 u" d; `; g     {2 A5 O& S# L6 g. ~
         this.nodeURL = neoscanPortURL;
8 \6 D8 W" p- [- j     }
$ P' x1 _' S3 _$ i; }8 ?( n
5 m9 Q3 `9 f. {# R( b2 }     protected override string GetRPCEndpoint()5 K! \# F% q% H, s& R' t* C8 _
     {7 p9 g% P( X0 j! J! K
         return $"{nodeURL}:{port}";
. E* o" Q, {" l- |& O     }1 I2 M: s& j0 R
+ [" g( d, I! E; r! }; W& r9 X7 c
     public override byte[] GetStorage(string scriptHash, byte[] key)
3 t0 D) g' m3 }5 i: F; o     {
9 [( i( H* Q8 \& u9 i         var response = QueryRPC("getstorage", new object[] { key.ByteToHex() });8 c$ B& o( x. r0 ?) T  L, e& b
         if (response == null): X3 q& m, _% O% ]; G) A% P( A# L+ ?
         {
! R6 I, t0 u7 P1 R3 g( Z& ?* V+ u% i2 f             response = QueryRPC("getstorage", new object[] { scriptHash, key.ByteToHex() });6 p5 h$ d: i) s) v* ^7 z
             if (response == null)
2 d- r- H8 t+ H             {
* {# ~8 `# x) H' R* Z                 Debug.Log("Failed the QueryRPC");
4 r3 b0 i/ i" i# D8 ]! b7 A+ l                 return null;
, \) L$ R  d" U. H/ M, q             }
+ L  `, e& C: }$ Z- }2 j. s9 c         }& }, Z$ {6 t$ T- F  X' N4 y( _- _
         var result = response.GetString("result");/ H9 p  ^  C4 e; @4 ^# F+ ]% `
         if (string.IsNullOrEmpty(result))! o0 O# u5 `/ m
         {
& R, N& T% S7 W4 F% h             return null;5 c. ?* V& n7 M' p- V+ Q7 m) s) C
         }7 b: g) f# U! S: S
         return result.HexToBytes();" M" k, y' g# n$ d) b
     }, y- P" X8 k7 ~5 d: U, X
}
5 s/ c( g# r3 `. Z! c; ~你不需要太担心这段代码有什么用。 这是一个简单的类,继承自NEO Lux的基类RPC。它可以让我们更轻松地使用我们自己的私有网络。 这就引出了第2部分:设置你的NEO私有网络。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11