Unity中C#实现Matrix3x3的GetRow/GetColumn方法报错求助
Unity中Matrix3x3调用GetRow/GetColumn报错的原因分析
方法未正确实现或依赖误解
Unity自带的Matrix3x3结构体本身并没有内置GetRow和GetColumn方法,直接调用这个内置结构体的该方法必然会报错。另外,如果你自己实现了Matrix3x3类的这两个方法,可能存在访问权限问题(比如方法设为private导致外部无法访问),或者方法名拼写错误(比如把GetRow写成GetRows)。扩展方法的实现不符合规范
如果你打算用扩展方法给Matrix3x3添加这两个方法,可能踩了这些坑:- 扩展方法所在的类不是
static类 - 扩展方法的第一个参数没有加
this关键字(正确写法应为public static Vector3 GetRow(this Matrix3x3 matrix, int index)) - 没有引入扩展方法所在类的命名空间(缺少对应的
using指令)
- 扩展方法所在的类不是
自定义类与内置结构体混淆
如果你自己定义了名为Matrix3x3的类,但调用时实际引用的是Unity内置的UnityEngine.Matrix3x3结构体,就会出现找不到方法的情况。需要明确调用的是自定义类还是内置结构体,必要时用命名空间全称区分(比如YourCustomNamespace.Matrix3x3)
内容的提问来源于stack exchange,提问作者Good Panic
相关产品推荐
相关产品推荐

