优质的开发资讯交流平台,能够帮助各位开发者们更好地汲取开发相关知识,进而用于实践。开发大师实战班通过为各阶段开发者提供有针对性的技术培训,解决了多个不同方面的开发难题,也拓展了开发者间的交流渠道,帮助开发者们更高效地投入到深层次开发创造之中。
上一期开发大师实战班的重难点笔记解答了自定义相关的问题,大家有认真学习吗?本期开发大师实战班将带来关于MOD SDK使用中的答疑解惑,主要涉及UI及其他相关问题的补充,开发者们快召集伙伴,一起来学习吧。
MOD SDK答疑解惑
Q:想实现长按释放技能的效果,但是这个接口不会用,能讲讲吗?
A:这个接口是这样的,原版长按按钮触发的效果有:与生物交互、右键使用物品、破坏方块等。所以这个接口设置的是这些原版操作的时间。如果你现在是要长按自己某个按钮释放技能的话,那就是按下按钮时记个时间差,然后ui都有个Update的多态,继承之后在里面比较下时间差,比如超过设定上的1秒,2秒就执行一次技能,然后按钮弹起时把那个时间差去掉。ui也有个update刷新函数,因为这个长按接口,跟自定义按钮关系不大,这个是长按屏幕多久触发mc原版的长按操作。
Q:如果没写UI按钮,可以不用UI做长按释放技能吗?
A:可以的。可以在玩家手持某个道具时长按设置比如3秒,那么长按屏幕会触发道具的tryuseevent,然后在事件里做你想要的技能,再在玩家切换到其他物品时重置这个时间。
Q:UI上的TouchEventHandler,按住时是不是也是一直每秒30次触发对应的touch事件?
A:按住的话只会触发一次touchdown事件,弹起时触发一次touchup事件。
Q:变量域如何达到以装备件数来给予药水效果?
A:如下图所示:
Q:Fog的颜色RGBA值怎么写?
A:将RGBA值/255后填入 fog.SetFogColor((R, G, B, A))即可。
如下图所示:
Q:time组件的计时问题怎么算?
A:一天的时间为24000。
Q:指南书如何制作?
A:如下图所示:
Q:请问有方法防止组件中存储到世界的数据不被别的组件干扰或者删除吗?
A:因为目前组件出现过“别人的组件一加载就初始化世界数据”这种情况,这导致我们组件的玩家使用很久存储了很多资源数据在世界中,同时加载就会出现玩家资源数据丢失的情况。首先,extraData应该还是有个能够储存数据量的上限。个人认为,每个键对应的数据量有一个上限。其次,注意自己的key不要跟别人的重复。如果是方块数据的话,之后可以保存到自定义方块实体上。
Q:这个接口是无效的吗?
SetPlayerMaxExhaustionValue
comp = serverApi.CreateComponent(player_id, "Minecraft", "player")
comp.SetPlayerMaxExhaustionValue(0.1)
A:该接口本来是调整玩家饥饿度消耗速度的,接口说明上写的是“值越大速度越慢”。
而我们这边调整让他低于默认值并没有变化。可以参考wiki上面的饱和度词条。
因为饱和度计算起来很麻烦,wiki饥饿链接:https://minecraft-zh.gamepedia.com/%E9%A5%A5%E9%A5%BF
我们按照wiki上的食物饱和度词条,已经将饱和度设置为0了。但是饥饿条没有抖动,也没有掉饱和度。这个接口看起来是原版有一个消耗度,当触发了你设置的这个MaxExhaustionValue后,会归零且饥饿度减少1。如果这几个消耗很慢的话,就尝试设置默认最大值为4,然后print返回结果验证是否设置成功。
Q:结构载入时,有方法保证一定在水面之上么?
A:有的。Y用三元运算符,使其必须取到62格以上的位置,否则会放置在0格。
Q:可以主动让区块加载吗?
A:因为手动放置结构的话也会遇到区块未加载、放置失败的问题。这里的最小最大坐标设置、key作用不明。
可以尝试用(SetAddArea)这个接口。如果要设置一个区块的加载区域,就需要给一个最小坐标和最大坐标。可以理解为一个方盒子,在这个区域内尝试放置。key就是一个身份证明,之后要回收掉这个常加载区域的话,要用key来回收。建议直接用原版指令设置常加载区块。如图所示:
更多相关资讯请关注:我的世界专区