【发布时间】:2020-11-29 16:28:42
【问题描述】:
如何编辑代码以使滑块适合我? 例如,当我将一个对象分配给我的右腿时,这些值被加载到滑块中,但我不能随它们一起移动。 列出错误: NullReferenceException:对象引用未设置为对象的实例 Slider2.Update () Slider2.cs:53 谢谢你的建议
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEditor;
[ExecuteInEditMode]
[CustomEditor(typeof(Slider2))]
public class Slider2 : MonoBehaviour {
[Header("Pravá noha - RightUpLeg")]
public Transform pravanoha ;
[Range(-360f,360f)]public float pravanohaRX;//180.0f
[Range(-360f,360f)]public float pravanohaRY ; //180
[Range(-360f,360f)]public float pravanohaRZ ; //0.0f
[Header("Pravé koleno - RightLeg")]
public Transform pravekoleno ;
[Range(-360f,360f)]public float pravekolenoRX ; //=180.0f
[Range(-360f,360f)]public float pravekolenoRY; // 180.0f;
[Range(-360f,360f)]public float pravekolenoRZ ; //=0.0f
// Use this for initialization
public virtual void Start () {
}
// Update is called once per frame
public virtual void Update() {
pravanohaRX= UnityEditor.TransformUtils.GetInspectorRotation(pravanoha.transform).x;
pravanohaRY= UnityEditor.TransformUtils.GetInspectorRotation(pravanoha.transform).y;
pravanohaRZ= UnityEditor.TransformUtils.GetInspectorRotation(pravanoha.transform).z;
pravanoha.transform.localEulerAngles = new Vector3( pravanohaRX, pravanohaRY, pravanohaRZ);
}
}
【问题讨论】:
-
不管怎样,这根本不起作用,因为
UnityEditor顾名思义,它只存在于 Unity 编辑器本身中。当您尝试构建它时,它会抛出编译器错误,因为 UnityEditor 命名空间将被完全剥离。你的错误听起来像pravanoha没有被引用..注意顺便说一句,获得一个向量3次仅单独访问三个组件(x,y,z)是完全低效和冗余的..所有这些只是为了再次使用它最终作为一个向量..只需使用向量本身... -
然后 ...
TransformUtil.GetInspectorRotation.. 它只是将 se 的东西返回为pravanoha.transform.localEulerAngles... 所以你的方法绝对什么都不做... Inspector 中显示的值已经 是本地位置和旋转......所以你有点覆盖你在检查器中所做的一切......看起来很奇怪。您是否尝试过使用GetInspectorRotation完全跳过这 3 行? -
然后:使用
[CustomEditor...]删除这些标签它们在MonoBehavior上没有意义,但仅在自定义Editor类上......而不是使用ExecuteInEditMode和Update我建议改用OnValidate -
它不起作用
标签: unity3d rotation slider updates virtual