10-28-2019, 02:14 PM
Hi, I want to create splines at runtime with the follow code:
But I receiving this error when "AutoHandles = false" runs:
But on the properties "AutoHandles" already is off.
If I wait next update and trying:
the scripts runs whitout erros.
Probably I'm missing something to correct initialization. What I need to do?
Code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FluffyUnderware.Curvy;
using FluffyUnderware.Curvy.Controllers;
public class SplineCreatorTest : MonoBehaviour{
private bool keyUp = true;
void Update(){
if (Input.GetKey(KeyCode.M) & keyUp){
keyUp = false;
gameObject.AddComponent<CurvySpline>();
gameObject.GetComponent<CurvySpline>().Interpolation = CurvyInterpolation.Bezier;
List<GameObject> goList = new List<GameObject>();
for (int i = 0; i < 7; i++){
goList.Add(new GameObject("CP000" + i.ToString()));
goList[i].transform.SetParent(this.transform);
goList[i].gameObject.AddComponent<CurvySplineSegment>();
}
goList[0].transform.localPosition = new Vector3(0.0f,0.0f,0.0f);
goList[1].transform.localPosition = new Vector3(0.0f, 0.0f, 156.0f);
goList[2].transform.localPosition = new Vector3(100.0f, 0.0f, 256.0f);
goList[3].transform.localPosition = new Vector3(200.0f, 0.0f, 156.0f);
goList[4].transform.localPosition = new Vector3(100.0f, 0.0f, 56.0f);
goList[5].transform.localPosition = new Vector3(0.0f, 0.0f, 156.0f);
goList[6].transform.localPosition = new Vector3(0.0f, 0.0f, 256.0f);
goList[1].gameObject.transform.GetComponent<CurvySplineSegment>().AutoHandles = false;
//NullReferenceException: Object reference not set to an instance of an object
//SplineCreatorTest.Update()(at Assets / SplineCreatorTest.cs:31)
goList[1].GetComponent<CurvySplineSegment>().HandleIn = new Vector3(0.014761f, 0.0f, -54.69138f);
goList[1].GetComponent<CurvySplineSegment>().HandleOut = new Vector3(-0.014761f, 0.0f, 54.69138f);
goList[5].gameObject.transform.GetComponent<CurvySplineSegment>().AutoHandles = false;
goList[5].GetComponent<CurvySplineSegment>().HandleIn = new Vector3(0.62f, 0.0f, -57.872f);
goList[5].GetComponent<CurvySplineSegment>().HandleOut = new Vector3(-0.62f, 0.0f, 57.872f);
}
if (Input.GetKeyUp(KeyCode.M)) { keyUp = true; }
}
}
But I receiving this error when "AutoHandles = false" runs:
Code:
NullReferenceException: Object reference not set to an instance of an object SplineCreatorTest.Update()(at Assets / SplineCreatorTest.cs:31)
But on the properties "AutoHandles" already is off.
If I wait next update and trying:
Code:
goList[1].gameObject.transform.GetComponent<CurvySplineSegment>().AutoHandles = false;
goList[1].GetComponent<CurvySplineSegment>().HandleIn = new Vector3(0.014761f, 0.0f, -54.69138f);
goList[1].GetComponent<CurvySplineSegment>().HandleOut = new Vector3(-0.014761f, 0.0f, 54.69138f);
goList[5].gameObject.transform.GetComponent<CurvySplineSegment>().AutoHandles = false;
goList[5].GetComponent<CurvySplineSegment>().HandleIn = new Vector3(0.62f, 0.0f, -57.872f);
goList[5].GetComponent<CurvySplineSegment>().HandleOut = new Vector3(-0.62f, 0.0f, 57.872f);
Probably I'm missing something to correct initialization. What I need to do?