Мне нужно получить поле Joint.massScale из il2cppSystem.Object как ConfigurationJoint : Объединенный объект.
Это поле существует в UnityExplorer:

И может ли пользователь напрямую:
Что не получается:
Код: Выделить всё
.GetMemberКод: Выделить всё
MemberInfo member = anyObject.GetIl2CppType()
.GetMember(requested, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.FlattenHierarchy)
.First();
Код: Выделить всё
static IEnumerable GetAllMembersRecursivly(Il2CppSystem.Type type) =>
type.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)
.Concat(type.BaseType == Il2CppType.Of() ? new MemberInfo[0] : GetAllMembersRecursivly(type.BaseType));
Может быть???
Единственное обходное решение, которое я нашел, — это жестко запрограммировать этот тип, например это:
Код: Выделить всё
if (cj != null && requested == "massScale" && !path.Any())
{
return ((v) => cj.massScale = v.Unbox(), Il2CppType.Of());
}
Дополнительная информация:
Я выполняю некоторую отладку и вывожу все поля типа и его подтипа:
Код: Выделить всё
base type: UnityEngine.ConfigurableJoint
fields:
set_targetPosition
set_xDrive
set_yDrive
set_zDrive
set_targetRotation
set_rotationDriveMode
set_slerpDrive
set_targetPosition_Injected
set_xDrive_Injected
set_yDrive_Injected
set_zDrive_Injected
set_targetRotation_Injected
set_slerpDrive_Injected
targetPosition
xDrive
yDrive
zDrive
targetRotation
rotationDriveMode
slerpDrive
base type: UnityEngine.Joint
fields:
get_connectedBody
set_connectedBody
set_axis
get_anchor
set_anchor
get_connectedAnchor
set_connectedAnchor
set_autoConfigureConnectedAnchor
set_enableCollision
set_enablePreprocessing
set_axis_Injected
get_anchor_Injected
set_anchor_Injected
get_connectedAnchor_Injected
set_connectedAnchor_Injected
connectedBody
axis
anchor
connectedAnchor
autoConfigureConnectedAnchor
enableCollision
enablePreprocessing
Подробнее здесь: https://stackoverflow.com/questions/790 ... -see-field
Мобильная версия