MineCrocodile
举例来说,比如我想让一个名为test的记分板在分数分别为1到10的时候执行不同的函数文件

我是写在同一个函数文件里面比较好,如:
execute if score XXX test matches 10 run ...
execute if score XXX test matches 9 run ...
execute if score XXX test matches 8 run ...
execute if score XXX test matches 7 run ...
等等

还是用函数文件嵌套的方式比较好?如
execute if score XXX test matches 10 run ...
execute if score XXX test matches 1..9 run function xxx:1

1.function
execute if score XXX test matches 9 run ...
execute if score XXX test matches 1..8 run function xxx:2


2.function
execute if score XXX test matches 8 run ...
execute if score XXX test matches 1..7 run function xxx:3

等等

还是说两种方式对于系统资源消耗其实没区别?

产生这种疑问主要是我自以为第一种方式,无论test分数是多少,这堆指令都要默默运行一遍,而第二种方法,比如一开始遇到的是10的话就只要运行两句话就行了?不知道想的对不对


(=°ω°)丿
对资源占用不是很了解,不过光从命令执行的条数来说,
你想的对。
不过在函数里用调用其他函数,也算一条指令(/function xxx:xxx)。
如果第二种方法一开始遇到的是1的话就有趣了
个人认为最节省资源的是二分法。
例如:
分数是 1..8,
可以分成两组:1..4 和 5..8,
如果在 1..4 里,则再分成两组:1..2 和 3..4,
如果在 1..2 里,则再分成 1 和 2。
当然这是在各种分数等概率出现的情况下。
一般是希望出现频率高的分数命令执行的次数少,出现频率低的分数命令执行的次数相对较多些。
莫名想到霍夫曼编码(跑
当然光一两条命令基本是看不出资源占用的变化是有多大的。
除非是一个浩大的工程,或者是批量生成 / 修改实体什么的

模仿...
如果看命令数量的话,嵌套那种也不轻松呢,如果想节省资源可以降低这种检测函数的执行频率嘛。

MineCrocodile
Teenager_Yang 发表于 2019-7-15 22:15
对资源占用不是很了解,不过光从命令执行的条数来说,
你想的对。
不过在函数里用调用其他函数,也算一条指 ...

谢谢,感觉你说的有道理

⊙u⊙
本帖最后由 ⊙u⊙ 于 2019-7-15 23:55 编辑

嵌套不轻松,但就是能省...我个人理解,越想你的数据包省资源,指向的function就越频繁,也就越难看...

如果你是想往优化方面走的话,听我(和从大佬那里记来的小抄)几点...


ref...
https://minecraftcommands.github.io/commanders-handbook/

MineCrocodile
⊙u⊙ 发表于 2019-7-16 17:12
嵌套不轻松,但就是能省...我个人理解,越想你的数据包省资源,指向的function就越频繁,也就越难看...

如 ...

感谢!又学到一些优化的方法!