Unity C#'Matrix3x3'不包含'GetRow'的定义

问题描述 投票:0回答:1

我正在使用 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?)
错误。有谁知道这个问题是从哪里来的?

c# unity3d
1个回答
-1
投票

你得到的错误只是意味着你正在尝试使用无法访问或不存在的东西。

在你的情况下,

GetRow(int)
似乎不存在。你确定你已经实施了
GetRow(int)
?如果这样做,请确保在 Unity 中重新编译之前保存了文件。

您可以在此处阅读有关错误的更多信息

纠正这个错误

  1. 确保您输入的会员名称正确。
  2. 如果你有权限修改这个类,你可以添加缺少的成员并实现它。
  3. 如果你没有修改这个类的权限,你可以添加一个扩展方法。

编辑:

你说 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.");
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.