La réflexion Unity3d obtient la valeur de la rotation du panneau

  //获取到旋转的正确数值
    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);

Mais cette méthode échoue après la publication du package, car la valeur obtenue par GetProperty est nulle,
mais seul transform.localEulerAngles peut être utilisé.

transform.localEulerAngles

Maka

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45023328/article/details/122887159
conseillé
Classement