Question by
jekmen · Sep 29, 2017 at 09:36 PM ·
prefabsave datafixedupdate
FixedUpdate Crash when try to save prefab in runtime.
Hi everyone! First sory for my english. I have a problem when I saving a prefab at runtime, some other functions not working after this. Can everyone help?
public static class SA_SaveObject
{
public static void SaveObjectToList(GameObject obj, List<GameObject> storage)
{
if (obj)
{
// So, this function saves object to list in other gameobject
// Becouse I whant remove this obj from scene and take it from local path
// create directory
if (!Directory.Exists("Assets/SpaceAI/Local Data"))
{
AssetDatabase.CreateFolder("Assets/SpaceAI", "Local Data");
}
// now save obj to created dir
if (Directory.Exists("Assets/SpaceAI/Local Data"))
{
// create new prefab from "obj"
GameObject pref = PrefabUtility.CreatePrefab("Assets/SpaceAI/Local Data/" + obj.name + ".prefab", obj);
// now if this obj have the same name I jast ovveride it
pref = PrefabUtility.ReplacePrefab(obj, pref, ReplacePrefabOptions.ConnectToPrefab);
// save to list
storage.Add(pref);
// Print the path of the created asset
Debug.Log(AssetDatabase.GetAssetPath(pref));
}
}
}
}
This function save my obj and it works fine but
case Doking.Dok:
flight.turOnObstacleSystem = false;
float disFinal = Vector3.Distance(this.transform.position, dokTarget.transform.position);
if (disFinal > 0)
{
flight.positionTarget = dokTarget.transform.position;
mainShip.GetComponent<SA_TransportController>().StartCoroutine(mainShip.GetComponent<SA_TransportController>().HangarDoors("HungarOpen", "Open"));
flight.m_MainControls.Speed = 5f;
this.transform.SetParent(dokTarget);
var q = Quaternion.LookRotation(flight.positionTarget - this.transform.position);
transform.rotation = Quaternion.RotateTowards(transform.rotation, q, 50 * Time.deltaTime);
if (disFinal < 5)
{
if (flight.m_MainControls.Speed == 0)
{
//hear is the function after it not working ".HangarDoors("HungarClose", "Close")"
SA_SaveObject.SaveObjectToList(this.gameObject, mainShip.GetComponent<SA_TransportController>().ships);
}
flight.m_MainControls.Speed = 0;
mainShip.GetComponent<SA_TransportController>().StartCoroutine(mainShip.GetComponent<SA_TransportController>().HangarDoors("HungarClose", "Close"));
}
}
else
{
dokState = Doking.Step;
flight.m_MainControls.Speed = savedSpeed;
}
break;
and I found that one of my cameras on the scene also ceases to work, it just loses the image what could be the problem? And is it possible, for example, to create prefabs asynchronously, if there is no solution to this problem?
Comment