El reflejo de Unity3d obtiene el valor de la Rotación del panel.

  //获取到旋转的正确数值
    public Vector3 GetInspectorRotationValueMethod(Transform transform)
    {
    
    
        // 获取原生值
        System.Type transformType = transform.GetType();
        PropertyInfo m_propertyInfo_rotationOrder = transformType.GetProperty("rotationOrder", BindingFlags.Instance | BindingFlags.NonPublic);
        object m_OldRotationOrder = m_propertyInfo_rotationOrder.GetValue(transform, null);
        MethodInfo m_methodInfo_GetLocalEulerAngles = transformType.GetMethod("GetLocalEulerAngles", BindingFlags.Instance | BindingFlags.NonPublic);
        object value = m_methodInfo_GetLocalEulerAngles.Invoke(transform, new object[] {
    
     m_OldRotationOrder });
        string temp = value.ToString();
        //将字符串第一个和最后一个去掉
        temp = temp.Remove(0, 1);
        temp = temp.Remove(temp.Length - 1, 1);
        //用‘,’号分割
        string[] tempVector3;
        tempVector3 = temp.Split(',');
        //将分割好的数据传给Vector3
        Vector3 vector3 = new Vector3(float.Parse(tempVector3[0]), float.Parse(tempVector3[1]), float.Parse(tempVector3[2]));
        return vector3;
    }
 
 
旋转物体并且限制角度
  float eulerAngle = GetInspectorRotationValueMethod(transform).x - rotaSpeed * Time.deltaTime;
  ulerAngle = Mathf.Clamp(eulerAngle, -170, 170);
  transform.localEulerAngles = new Vector3(eulerAngle, 0, 0);

Pero este método falla después de que se libera el paquete, porque el valor obtenido por GetProperty es nulo,
pero solo se puede usar transform.localEulerAngles.

transform.localEulerAngles

maka

Supongo que te gusta

Origin blog.csdn.net/weixin_45023328/article/details/122887159
Recomendado
Clasificación