使用Swift,我正在尝试锻炼一个复杂的阵列过滤器或排序,我被卡住了.我的整数数组可以包含1到7个元素.给定一个不在数组中的某个整数值(比如X),我想找到给出自身和X之间最小差异的数组元素.
我通过将以下脚本添加到检查器中的空游戏对象来创建贝塞尔曲线.当我运行代码时,这将立即绘制完成曲线.如何在给定的时间段内制作动画,例如2或3秒?
public class BCurve : MonoBehaviour {
LineRenderer lineRenderer;
public Vector3 point0, point1, point2;
int numPoints = 50;
Vector3[] positions = new Vector3[50];
// Use this for initialization
void Start () {
lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material (Shader.Find ("Sprites/Default"));
lineRenderer.startColor = lineRenderer.endColor = Color.white;
lineRenderer.startWidth = lineRenderer.endWidth = 0.1f;
lineRenderer.positionCount = numPoints;
DrawQuadraticCurve ();
}
void DrawQuadraticCurve () {
for (int i = 1; i < numPoints + 1; i++) {
float t = i / (float)numPoints;
positions …Run Code Online (Sandbox Code Playgroud) 我已经为一些要在场景视图中查看的游戏对象创建了一个编辑器,但它们仅在层次视图中选择时才会出现。下面是我的编辑器脚本。是我缺少的东西吗?
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(BezierCurve))]
public class BezierCurveInspector : Editor {
private BezierCurve curve;
private Transform handleTransform;
private Quaternion handleRotation;
private void OnSceneGUI () {
curve = target as BezierCurve;
handleTransform = curve.transform;
handleRotation = Tools.pivotRotation == PivotRotation.Local ?
handleTransform.rotation : Quaternion.identity;
Vector3 p0 = ShowPoint(0);
Vector3 p1 = ShowPoint(1);
Vector3 p2 = ShowPoint(2);
Handles.color = Color.white;
Handles.DrawLine(p0, p1);
Handles.DrawLine(p1, p2);
}
private Vector3 ShowPoint (int index) {
Vector3 point = handleTransform.TransformPoint(curve.points[index]);
EditorGUI.BeginChangeCheck();
point = Handles.DoPositionHandle(point, handleRotation);
if (EditorGUI.EndChangeCheck()) …Run Code Online (Sandbox Code Playgroud)