Как получить доступ к полям Unity из класса PreviewRenderUtility.cs, используя отражение C#? - PullRequest
0 голосов
/ 25 февраля 2020

Попытка получить поле камеры путем отражения от: https://github.com/Unity-Technologies/UnityCsReference/blob/master/Editor/Mono/Inspector/PreviewRenderUtility.cs/#L158

Раньше это работало, просто делая это:

p_Camera = (Camera)p_Instance.GetType().GetField("m_Camera").GetValue(p_Instance);

Поскольку оно помечено как устаревшее предлагается использовать камеру вместо m_Camera , но она не работает, и они оба возвращают ноль

Весь код:

            Type preview = Type.GetType("UnityEditor.PreviewRenderUtility,UnityEditor");
            BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | 
            BindingFlags.NonPublic;

            // Bind method
            beginPreview = preview.GetMethod("BeginPreview", bindingAttr);
            endPreview = preview.GetMethod("EndPreview", bindingAttr);

            // Create a preview
            p_Instance = Activator.CreateInstance(preview);

            // Get the camera
            p_Camera = (Camera)p_Instance.GetType().GetField("m_Camera").GetValue(p_Instance);

Как правильно отразить это? Можно ли как-то получить доступ к полям этого?

1 Ответ

0 голосов
/ 25 февраля 2020

Ну, это не поле, а свойство, как написано в ссылке на класс. Таким образом, решение: p_Camera = (камера) p_Instance.GetType (). GetProperty ("камера"). GetValue (p_Instance);

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