Pro*_*Pus 1 c# extension-methods reference unity-game-engine
有没有办法以这种方式更改扩展方法内的 Unity Vector3 结构值?
Vector3 myVector = new Vector(3.5f, 0.7f, 2f);
myVector.Floor(); // it should be (3f, 0f, 2f) instead it's (3.5f, 0.7f, 2f) still
Run Code Online (Sandbox Code Playgroud)
它只能以这种方式工作:
myVector = myVector.Floor(); // now it's (3f, 0f, 2f)
Run Code Online (Sandbox Code Playgroud)
扩展代码:
public static void Floor(this Vector3 vector)
{
vector.Set(Mathf.Floor(vector.x), Mathf.Floor(vector.y), Mathf.Floor(vector.z));
}
Run Code Online (Sandbox Code Playgroud)
或者
public static void Floor(this Vector3 vector)
{
vector.x = Mathf.Floor(vector.x);
vector.y = Mathf.Floor(vector.y);
vector.z = Mathf.Floor(vector.z);
}
Run Code Online (Sandbox Code Playgroud)
你的扩展方法应该是这样的:
public static void Floor(ref this Vector3 vector)
{
vector.x = Mathf.Floor(vector.x);
vector.y = Mathf.Floor(vector.y);
vector.z = Mathf.Floor(vector.z);
}
Run Code Online (Sandbox Code Playgroud)
因为struct是值类型
这是一个示例: https: //dotnetfiddle.net/NItg0O
归档时间: |
|
查看次数: |
189 次 |
最近记录: |