肇庆网站开发公司,阿里云认证网站建设,怎样建公司网站,怎么做网络推广网站我们有时候可能需要在面板增加一些引用#xff0c;可能添加脚本后要手动拖动#xff0c;这样如果有大量的脚本拖动也是不小的工作量
实例
例如#xff1a;我的脚本需要添加一个Bone的列表#xff0c;一个个拖动很麻烦。 实现脚本
我们可以用这样的脚本来实现。
public…我们有时候可能需要在面板增加一些引用可能添加脚本后要手动拖动这样如果有大量的脚本拖动也是不小的工作量
实例
例如我的脚本需要添加一个Bone的列表一个个拖动很麻烦。 实现脚本
我们可以用这样的脚本来实现。
public class FingerDyBone : MonoBehaviour
{public DynamicBoneCollider[] boneArray null;#if UNITY_EDITOR[ContextMenu(加入所有碰撞体)]private void MenuAddBone(){boneArray GetComponentsInChildrenDynamicBoneCollider();UnityEditor.EditorUtility.SetDirty(this);}void OnValidate(){Debug.Log(OnValidate);if (boneArray null) MenuAddBone();}
#endif
}ContextMenu是菜单添加这个可以手动调用函数。 如果手动麻烦还可以自动添加那么可以借助OnValidate函数在添加脚本或者改变属性的时候会自动执行。解决这个原理就可以在添加脚本的时候自动添加。
最终效果 那么这样就比较事半功倍了。
调试显示
我们还可以通过OnDrawGizmos显示一些常用的图形 例如:
通过OnDrawGizmos方法,使用Gizmos画各种图形 void OnDrawGizmos()
{Transform[] bornPoint GetComponentsInChildrenTransform();for (int i 0; i bornPoint.Length; i){Gizmos.color Color.yellow;Gizmos.DrawWireSphere(bornPoint[i].position, 0.15f);Gizmos.color Color.white;Gizmos.DrawLine(bornPoint[i].position, bornPoint[i].position Vector3.up);Gizmos.color Color.blue;Gizmos.DrawLine(bornPoint[i].position, bornPoint[i].position Quaternion.Euler(bornPoint[i].eulerAngles) * Vector3.forward * 0.5f);}
}