获取私有向量及其组件C#

时间:2019-02-22 10:41:44

标签: c# unity3d vector

我一直在尝试重写游戏中的方法。为此,我需要获取一个私有向量及其组件。有问题的向量称为viewShake,它具有三个成分,分别为x,y和z。

问题是,我不能使用MethodInfo或FieldInfo或Vector3作为变量类型,因为它根本无法工作。 MethodInfo和FieldInfo不起作用,因为我需要做数学运算,而Vector3则不起作用,因为我不能使用GetMethod()或GetField()

private FieldInfo viewShakeX;
private FieldInfo viewShakeZ;
private FieldInfo viewShakeY;

[Initializer]
public void Init()
{
    viewShakeX = typeof(PlayerAnimator).GetField("viewShake.x", ReflectionVariables.PrivateStatic);
    viewShakeZ = typeof(PlayerAnimator).GetField("viewShake.z", ReflectionVariables.PrivateStatic);
    viewShakeY = typeof(PlayerAnimator).GetField("viewShake.y", ReflectionVariables.PrivateStatic);
}

[Override(typeof(PlayerAnimator), "shake", BindingFlags.Public | BindingFlags.Instance)]
public void OV_shake(float shake_x, float shake_y, float shake_z)
{
    if (MiscOptions.DisableShaking)
    {
        viewShakeX = 0;
        viewShakeZ = 0;
        viewShakeY = 0;
    }
    else
    {
        viewShakeX = viewShakeX + shake_x;
        viewShakeY = viewShakeY + shake_y;
        viewShakeZ = viewShakeZ + shake_z; 

}

(忽略Initialiser和Override属性)

正如您所知道的,我显然对C#来说还很陌生,因此,如果我在这里很蠢,对不起。我搜索过高低,但是找不到解决方法。

1 个答案:

答案 0 :(得分:0)

您无法一步一步获得它。您必须先获取viewShake对象的实例,然后再对x,y和z组件进行更多调用-相对于viewShake对象。