我一直在尝试重写游戏中的方法。为此,我需要获取一个私有向量及其组件。有问题的向量称为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#来说还很陌生,因此,如果我在这里很蠢,对不起。我搜索过高低,但是找不到解决方法。
答案 0 :(得分:0)
您无法一步一步获得它。您必须先获取viewShake对象的实例,然后再对x,y和z组件进行更多调用-相对于viewShake对象。