Мне удалось сохранить положение, вращение, масштаб, цвет и форму трехмерного объекта. Однако, когда я пытаюсь загрузить объект, цвет не отображается; но все остальное работает нормально. Я попытался использовать "newObject.GetComponent (). Material.color = colorOfObject" по предложению сверстника, но компилятору не нравится синтаксис. Я на правильном пути?
Примечание. Я только что включил свой код в параметр куба, чтобы предоставить более короткий блок кода, но у меня есть другие параметры формы, которые может выбрать пользователь.
// Saving
if (GUI.Button(new Rect(700, 330, 50, 30), "Save"))
{
// Saving the object's color and resetting it to white
Color colorOfObject = rend.material.GetColor("_Color");
PlayerPrefs.SetFloat("rValue", colorOfObject.r);
PlayerPrefs.SetFloat("gValue", colorOfObject.g);
PlayerPrefs.SetFloat("bValue", colorOfObject.b);
rend.material.SetColor("_Color", Color.white);
}
// Loading
if (GUI.Button(new Rect(770, 330, 50, 30), "Load"))
{
GameObject newObject;
if (PlayerPrefs.GetString("Shape") == "cube")
{
newObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
newObject.AddComponent<cubeControls>();
newObject.transform.position = new Vector3(PlayerPrefs.GetFloat("xCoord"), PlayerPrefs.GetFloat("yCoord"), PlayerPrefs.GetFloat("zCoord"));
newObject.transform.rotation = Quaternion.Euler(PlayerPrefs.GetFloat("xRot"), PlayerPrefs.GetFloat("yRot"), PlayerPrefs.GetFloat("zRot"));
newObject.transform.localScale = new Vector3(PlayerPrefs.GetFloat("xScale"), PlayerPrefs.GetFloat("yScale"), PlayerPrefs.GetFloat("zScale"));
Color defaultColor = Color.white;
Color colorOfObject = new Color(PlayerPrefs.GetFloat("rValue", defaultColor.r), PlayerPrefs.GetFloat("gValue", defaultColor.g), PlayerPrefs.GetFloat("bValue", defaultColor.b));
//rend.material.SetColor("_Color", colorOfObject);
newObject.GetComponent().material.color = colorOfObject;
Destroy(gameObject);
}