大家好,由于本次更新导致底层变动十分大,存在部分接口变更及规定变更,有可能导致各位玩家的作品出现一些问题,对此我们十分抱歉。
所以我们在经过仔细的研究与总结,整理出来了一份相对比较完善的兼容清单,以下是本次更新导致的问题及解决方法,如有缺失,请各位玩家体谅,将问题写到本帖下方,我们会尽快整理这些问题并回复。
变更一:
客户端进入时数据改成完全由服务器同步;老版本由于客户端需要加载地图,所以当客户端进入游戏的时服务器需要一次大量计算,来计算这个客户端进入游戏的时候有哪些地图数据需要同步,会导致服务器当前帧会有较高的延迟。此修改可能造成之前调用对象未使用WaitForChild的逻辑调用不到对象导致执行错误,客户端调用对象加上WaitForChild可避免出错。
举例:
旧版写法:WorkSpace.零件.光源 或 script.Parent.光源
在寻找子级和同级的时候有可能会找不到,原因是时序进行了变更。当服务器脚本与光源都为该零件下的子级时,无法确保脚本和光源谁先加载出来,所以有可能会报空。
解决方法: 在接下来的寻找对象中,将以往点点点的方式替换成WaitForChild
如:WorkSpace:WaitForChild(“零件“) 、 script.Parent:WaitForChild(“零件”)
变更二:
客户端脚本执行不再等待Player下的对象加载完;老版本是Player所有东西同步后才会执行。
解决方法:客户端调用对象加上WaitForChild,解决方法与变更一相同。
变更三:
客户端脚本的PlayerAdded事件不再生效,因此在客户端获取玩家时不要用该事件。
解决方法:客户端获取玩家使用Players:GetLocalPlayer函数,不要在使用事件。
变更四:
脚本创建函数更改为RwObject:New的格式,且创建出来的对象不再拥有子集。
举例:创建一个角色,在工作区中只会有角色的对象,不会有角色底下的身体部件。
解决方法:原先用该函数创建基础对象的 将写法替换成新的格式。原先创建角色的将写法替换成Clone()函数,且现在Clone函数括号内必须填写父级
变更五:
脚本中属性和参数赋值增加类型验证,输出报错信息,出错代码将不会继续运行;老版本赋值错误没有相应的提示,不方便排查,老地图按照报错修改赋值错误即可。
变更六:
删除脚本清除注册事件,老版本中如果这个脚本被删除后事件还能触发,现已修复。
举例:原先在零件下写一个for 循环,将该对象删除后该循环不会停下,新版本中可会停下。
变更七:
删除鼠标静止不动事件MouseIdle,需要此功能的可以检测鼠标位置属性来实现。
变更八:
角色下的服装、颜色、表情存在多个时按第一个生效,类似于旧版本中自定义角色可以有多个,但是只有第一个会生效。
变更九:
取消了服装的碰撞拾取功能,拾取了不是第一个服装也看不到新的服装效果,需要自行写逻辑删除身上已有服装。
变更十:
背包初始化下的工具会在角色每次生成、复活中重新初始化到背包中,老地图只会在第一次执行背包初始化,导致部分玩家会自行写背包逻辑。
解决方法: 删除曾经自己写的逻辑。
变更十一:
按钮穿透不再触发OnClick事件,老版本按钮穿透点不到按钮依然会触发按钮点击事件是BUG,新版中修复了此BUG,如果按钮需要点击事件就不要让按钮穿透。
变更十二:
修改之前可以Require客户端脚本和服务器脚本的BUG,Require只可以对通用模块脚本使用。
解决方法:把原逻辑放到通用模块脚本中,修改一下之前写的访问路径。
变更十三:
玩家初始化下“第一人称相机”和“第三人称相机”摄像机2个合成一个“StarterCamera”;解决方法:本地有下载过官方摄像机脚本需要重新下载,原先调用过第三人称和第一人称的玩家需要将写法变更,将更换枚举改写成修改摄像机参数。
变更十四:
光影效果升级全局光照,环境光只保留混合色模式可调,原来为其他模式的环境光需要重新调效果。
解决方法:环境效果需要重新调整数值,由于材质重新制作了,可能会导致部分游戏的美术效果也需要重新调整。
变更十五:
爆炸效果从特效中拆分出来了。
解决方法:老的爆炸效果无效,需要调用RwObject:New(“Explosion”)创建特效并
更改ExplosionPosition(爆炸位置)。
变更十六:
Vector2、Vector3、Vector4不再支持Vector3.x=10 等类似单独成员赋值,该赋值方法会提示报错。原官方操作模板和相机模板因书写不规范导致按上述方法进行了赋值,因此之前用官方模板的同学需要将模板删除,重新下载新的模板。
解决方法:重新下载模板,并将自己改写的内容复制到新的模板中,并将自己以前在其他脚本中写的Vector3.x单独成员赋值改写成
Vector3.New(X,Y,Z)。
变更十七:
删除原先用户输入服务中的MoveEvent和EventJump事件。原先官方操作模板和相机模板有相关代码。
删除旧版官方模板,重新下载新的模板,并将自己修改的内容进行复制。
变更十八:
编辑器界面进行大改版,部分对象名字进行了变更。原先取名为零件的Part类型对象保持不变,但是玩家界面变更成了GameUI,玩家脚本变更成了PlayerScripts
解决方法:之前调用过player.玩家界面 的同学将玩家界面换成GameUI
玩家脚本换成PlayerScript。
变更十九:
接触事件机制改版,在接触角色时碰撞改为每个部件都会触发碰撞且返回碰撞目标的身体部件,参数1依然为Avatar,参数2为部件,会导致角色和零件碰撞触发多次
解决方法:写法上做出变更,如果仅对零件做简单操作可不用更改写法,如果是其他有数值变动的内容,需要增加判定。
local a=script.Parent local b=0 local c=0 a.TriggerEnter:Connect(function(res,body) if res:IsClass("Avatar") and c==0 then c=1 b=b+1 print(b) wait(1) c=0 end end)
变更二十:
玩家角色使用平台角色下对象中文改成英文。
解决方法:原先调用动作文件夹改写成Animation,身体部件也改写成英文。
变更二十一:
通信中对表结构的参数进行了规定,发送消息table的key如果是数字会被转成字符串。
解决方法:收到的table的要用字符串key去访问。
如:原先访问表的第一个key写法是print(temp[1])
现在需要改成print(temp[“1”])
变更二十二:
新版角色中在属性栏最下方新增一个“角色状态启用”:该功能类似于零件的锚定功能,不勾选上的话角色会处于一个不可控状态,只能做基础动作,不能移动和寻路。
解决方法: 如果游戏内存在大量NPC不能移动,优先检查该属性是否被勾选。
变更二十三:
上衣、裤子、鞋子放到工作区下显示3D模型的对象检测模型变为“DisplayMesh”了。、
解决方法:修改展示模型对象名称为DisplayMesh,或新建对象再把服装资源配置进去。
变更二十四:
在一些地图中可能存在拿不起工具的情况,这个时候需要去检查一下背包初始化,有的人背包初始化为0,将数值调整以下即可。
变更二十五:
属性赋值不再与拼接连带关系。
举例:一个拼接的组合单位无法再通过更改其中一个零件的坐标实现整体位移。
解决方法:之前用动画和刷位置的同学们建议采用保持系统重新制作,新版本中新增了保持朝向,能有效的解决之前物理单位由于重心不稳而歪的问题。
变更二十六:
寻路服务出现了变动。NPC之前走的是角色模拟,现在NPC走的是零件类型的模拟,会导致在使用MoveTo 和NavigateTo时,客户端的NPC出现抖动现象,该问题会在接下来的版本中进行攻克。如果现在使用寻路时需要注意:
1. 不要在Update里面去写寻路,否则角色会一直在起点不动。
2. 建议角色寻路写到while 里面,while里面的等待时间建议改为wait(1),wait(0.1)也有可能导致不动的现象。
3. 因物理同步问题可能会导致用寻路接口时NPC在多人测试中表现闪烁、抖动现象。发布后会有所缓解。
变更二十七:
编辑器底层对序列进行了优化,新建对象会按照类型分类,同类型会放在一起,并且创建的最新对象会出现在最下方,现在无法通过鼠标移动去自由更改它的位置,只能更改对象的父子级,有可能导致的问题:
GetAllChild获取表顺序有可能出现报错,解决方法是将脚本的位置调整一下。
变更二十八:
编辑器对Destroy()进行了变更。举个例子:一个文件夹下存放了一个两个零件,我们用一个temp去接受这个文件夹。
local temp=WorkSpace.文件夹:GetAllChild()
那么此时表的长度为2。我们用print去打印他的名字和长度会出现 两个Part和 2。
新版本中用Destroy()接口去销毁其中的一个零件,那么此时表的结构就发生了变更,temp打印的值会变成 “”,Part ,2。删除的零件在编辑器中被删除,但是在Lua层其实并没有删除,如果要去调用需要我们手动去删除,或者将对象~=nil 改成 对象~=“ ”。
手动删除键值方法:
--数组基类释放 local function ReleaseList(list) for k,v in pairs(list) do if v.Name == "" then table.remove(list,k) end end return list end
编辑器更新FAQ:
1、编辑器上传后再下载下来时编辑器对象会变成英文化,此时需注意脚本写时调取的对象为中文还是英文。
2、名字不显示问题: 游戏开始后才会显示姓名。
3、开始后角色没有衣服:编辑器本地多开功能运行一下,有概率可解决该问题。或者找到
AppData\LocalLow\CodeView\重启世界编辑器\assets\server 路径下的server文件,
将该文件除。
本帖最后由 开会你是不是没听_轩哥 于 2020-09-17 16:33 编辑
请登录后评论~