找回密码
 立即注册
查看: 381|回复: 0

【Unity】XLua巨坑汇总

[复制链接]
发表于 2022-1-29 08:39 | 显示全部楼层 |阅读模式
目录
一、拓展方法未生效问题
二、xLua中获取transform的localEulerAngles异常问题

一、拓展方法未生效问题

最近在使用GameFramework框架,并且接入了xlua,在xlua的一开始Init.lua 我使用如下代码获取了一个全局类声明
  1. GameEntry = CS.StarForce.GameEntry    注意:Init.lua是游戏启动Lua时最先执行的lua文件用于require其他lua文件的
复制代码
接着我在各种UI使用它,遇到了无论我怎么检查都已经引入所有类型到Lua了(即LuaCallCSharp列表里),在我使用如下代码报错。
  1. GameEntry.Sound:IsMuted("Music")
复制代码




C#侧 ,这个方法是一个SoundExtension静态类的扩展方法!


我也试过使用如下代码进行尝试,出现一毛一样的报错!
  1. GameEntry.Sound.IsMuted("Music")
复制代码
解决方法 改为 CS.StarForce.GameEntry.GameEntry.Sound:IsMuted("Music") 即可,原因可能是我获取到的GameEntry的相关拓展方法还未生效。

更新时间:2021年1月12日
二、xLua中获取transform的localEulerAngles异常问题

localEulerAngles可能和C#侧的localEulerAngles不一样!
localEulerAngles可能和C#侧的localEulerAngles不一样!
localEulerAngles可能和C#侧的localEulerAngles不一样!
C#侧 ( PS:path 是 CinemachineSmoothPath , Cinemachine插件的一个辅助自定义路径点的类,tr是一个路径点四元数,它会根据路径长度来获取自定义路径的当前点并返回当前点的旋转四元数)
  1. var tr = path.EvaluateOrientationAtUnit(p, CinemachineSmoothPath.PositionUnits.Distance).eulerAngles;                        
  2. if (trans.localEulerAngles.y < tr.y - 1.5f || trans.localEulerAngles.y > tr.y + 1.5f)
  3. {
  4.     trans.rotation = Quaternion.RotateTowards(trans.rotation, Quaternion.Euler(0, tr.y, 0), 10 * Time.deltaTime);                           
  5. }
复制代码
lua侧(PS:trans.localEulerAngles.y 我直接改为 trans.eulerAngles 就是正常的数据得出正常的效果)
  1. local tr = self.path:EvaluateOrientationAtUnit(self.p, CS.Cinemachine.CinemachineSmoothPath.PositionUnits.Distance).eulerAngles
  2. if trans.eulerAngles.y < tr.y - 1.5 or trans.eulerAngles.y > tr.y + 1.5 then
  3.     trans.rotation = CS.UnityEngine.Quaternion.RotateTowards(trans.rotation, CS.UnityEngine.Quaternion.Euler(0, tr.y, 0), 10 * Time.deltaTime)
  4.     return
  5. end
复制代码
因此解决方法就是改为使用eulerAngles才正确,关于如何获取正确的localEulerAngles,目前还未深入研究(待研),可能也不会出现这种问题,比如xlua版本不同可能也不同,我认为应该是xlua自身的wrap转化出现问题了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-6-1 16:53 , Processed in 0.141544 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表