Получение частного вектора и его компонентов C # - PullRequest
0 голосов
/ 22 февраля 2019

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

Вы не можете получить его за один шаг.Сначала нужно получить экземпляр объекта viewShake, а затем выполнить больше вызовов для компонентов x, y и z - относительно объекта viewShake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...