Let'sMoveSui环形掌上战争0基础开发入门到精通(5)游戏模块的重复使用在游戏开发过程中,我们经常需要重复使用一些模块,比如:一些初始化常量、工具函数等等。在suimove中体现就是一个package里的modlue中某一个函数需要调用其他package里的module中的
<!--StartFragment-->
在游戏开发过程中,我们经常需要重复使用一些模块,比如:一些初始化常量、工具函数等等。 在sui move中体现就是 一个package里的modlue中某一个函数需要调用其他package里的module中的函数。
比如一个常数 π ,我们经常要用到 。 值为 3.1415926535897932384626433832
通常的做法是 定义一个常量 比如
//错误定义
const PI:u64 = 3.1415926;
//由于move里没有浮点数,所以只能用整除定义
const PI:u64 = 31415926;
这样定义,在move里,我们只能用整除运算来计算 π ,这样精度会损失。但游戏足够使用了。
我们还可以定义一个工具函数,比如:
public fun tpai():u64{
PI
}
这样,我们就可以使用 tpai() 来计算 π 了。以上只是示范,精度或细节小伙伴们自行调整。
这时候发布一下这个项目,形成线上的一个基础package,方便以后其他项目使用。
sui client publish --skip-fetch-latest-git-deps --skip-dependency-verification --gas-budget 100000000
记录并保留好 package id
0x3c46d0fd596a4868caf620fc2aa4847b7287908ffd5bdbc2e78d8d63f0a2e857
准备好线上git路径 https\://github.com/summertoo/tbase.git
然后将base工程push到tmove目录下
然后配置一个新的package工程,我这边拿上期使用的hellow举例 此处仅仅使用tbase()函数作为示范
module hellow::hellow{
use std::debug::{Self,print};
use std::string::{Self,utf8,String};
use tmove::tbase::{tbase};
entry public fun main(){
print(&utf8(b"start game ... "));
tbase();// start tbase ...
}
#[test]
fun nowtest(){
main();
}
}
此处的
use tmove::tbase::{tbase};
是将之前的tbase包导入进来,使用里面的tbase函数。
记得在 toml文件里写上address
[addresses]
hellow = "0x0"
tmove = "0x3c46d0fd596a4868caf620fc2aa4847b7287908ffd5bdbc2e78d8d63f0a2e857"
这样就可以顺利调用base package的方法了。 记得共享出来的方法要写 public 修饰
最后,测试一下
sui move test --skip-fetch-latest-git-deps
Running Move unit tests
[debug] "start game ... "
[debug] "start tbase ... "
[ PASS ] 0x0::hellow::nowtest
[debug] "star test hdcoind"
[ PASS ] 0x0::hbcoin::test_mint
Test result: OK. Total tests: 2; passed: 2; failed: 0
(未完待续)
telegram: https\://t.me/move_cn
QQ群: 79489587
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!