MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

用户:MashKJo/1.12.2模组开发教程/2.基础概念:修订间差异

跳到导航 跳到搜索
第54行: 第54行:


那么<code>@SideOnly(Side.SERVER)</code>呢?和你想的是一样的,但是——在正常情况下,不要用这个修饰任何东西。前文说了,<code>@SideOnly(Side.CLIENT)</code>用于修饰那些负责渲染、播放音效的类、方法,而又说了,“逻辑客户端(Render Thread)主要用于处理和视觉、听觉有关的效果,还负责处理玩家的键鼠输入等”。因为'''物理服务端没有逻辑客户端线程''',所以<code>@SideOnly(Side.CLIENT)</code>实际上也起到了“把代码的执行限定在逻辑客户端”的作用。可问题是,物理客户端也会有逻辑服务端,比如有个萌新Modder觉得“逻辑服务端掌管的是游戏逻辑的进行”,给某个负责游戏逻辑进行的方法打了<code>@SideOnly(Side.SERVER)</code>,那糟了,装了你的模组就没法进行单人游戏了——因为两个物理端都有逻辑服务端。
那么<code>@SideOnly(Side.SERVER)</code>呢?和你想的是一样的,但是——在正常情况下,不要用这个修饰任何东西。前文说了,<code>@SideOnly(Side.CLIENT)</code>用于修饰那些负责渲染、播放音效的类、方法,而又说了,“逻辑客户端(Render Thread)主要用于处理和视觉、听觉有关的效果,还负责处理玩家的键鼠输入等”。因为'''物理服务端没有逻辑客户端线程''',所以<code>@SideOnly(Side.CLIENT)</code>实际上也起到了“把代码的执行限定在逻辑客户端”的作用。可问题是,物理客户端也会有逻辑服务端,比如有个萌新Modder觉得“逻辑服务端掌管的是游戏逻辑的进行”,给某个负责游戏逻辑进行的方法打了<code>@SideOnly(Side.SERVER)</code>,那糟了,装了你的模组就没法进行单人游戏了——因为两个物理端都有逻辑服务端。
可能会有读者觉得,笔者讲的太抽象了。没事,等读者有了一定的开发经验,就懂了。反正记住:什么情况下,都别用<code>@SideOnly(Side.SERVER)</code>。我们是在写模组,不是在写服务器插件。


那么这个注解,意义何在呢?答案是减少性能开销,比如,你在物理服务端调用渲染代码也没卵用,毕竟物理服务端是以命令行的形式体现的,你渲染给谁看呢?可能又有人问了:要减少性能开销,那么针对两个物理端分别写不同的代码不就好了?这也太麻烦了。所以,这就是@SideOnly的存在的意义——让同一个模组在不同的物理端上运行时,共享同一套代码。
那么这个注解,意义何在呢?答案是减少性能开销,比如,你在物理服务端调用渲染代码也没卵用,毕竟物理服务端是以命令行的形式体现的,你渲染给谁看呢?可能又有人问了:要减少性能开销,那么针对两个物理端分别写不同的代码不就好了?这也太麻烦了。所以,这就是@SideOnly的存在的意义——让同一个模组在不同的物理端上运行时,共享同一套代码。
行政员、​优秀编辑者、​界面管理员、​监督员、​管理员、​小部件编辑者
3,430

个编辑

我们提供服务需要使用Cookie。您使用我们的服务,即表示您同意我们使用Cookie。

导航菜单