Я пытался переопределить метод в игре.Для этого мне нужно получить приватный вектор и его компоненты.Вектор, о котором идет речь, называется 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 #, как вы можете сказать, поэтому я извиняюсь, если я здесь тупой.Однако я искал все выше и ниже и не могу найти, что делать.