我正在使用 C# 语言在 Unity 中的 matrix3x3 上实现一个简单的 GetRow 和 GetColumn,但我收到了
'Matrix3x3' does not contain a definition for 'GetRow' and no accessible extension method 'GetRow' accepting a first argument of type 'Matrix3x3' could be found (are you missing a using directive or an assembly reference?)
错误。有谁知道这个问题是从哪里来的?
你得到的错误只是意味着你正在尝试使用无法访问或不存在的东西。
在你的情况下,
GetRow(int)
似乎不存在。你确定你已经实施了GetRow(int)
?如果这样做,请确保在 Unity 中重新编译之前保存了文件。
您可以在此处阅读有关错误的更多信息
纠正这个错误
- 确保您输入的会员名称正确。
- 如果你有权限修改这个类,你可以添加缺少的成员并实现它。
- 如果你没有修改这个类的权限,你可以添加一个扩展方法。
你说 implementing,就像你自己写的那样,但是如果你使用的是来自任何不属于你的库的
Matrix3x3
,并且 GetRow 不存在,那么你可以简单地使用 extension 方法实现它。
例如
Matrix3x3Extensions.cs
public static class Matrix3x3Extensions
{
public static Vector3 GetRow(this Matrix3x3 matrix, int rowIndex)
{
if (rowIndex < 0 || rowIndex > 2)
{
throw new ArgumentOutOfRangeException(nameof(rowIndex), "Row index must be between 0 and 2.");
}
switch (rowIndex)
{
case 0:
return new Vector3(matrix.M11, matrix.M12, matrix.M13);
case 1:
return new Vector3(matrix.M21, matrix.M22, matrix.M23);
case 2:
return new Vector3(matrix.M31, matrix.M32, matrix.M33);
default:
throw new ArgumentOutOfRangeException(nameof(rowIndex), "Row index must be between 0 and 2.");
}
}
}