Question by
UDN_00a4ad19-107b-40be-973a-89831f0c3303 · Jan 16, 2017 at 03:06 PM ·
arrayeditor-scriptingscriptableobjectarraylist
How to edit Properties of a ScriptableObject asset, specificly arrays/lists
I'm Pretty new to unity scripting so excuse me if that's a noob question. I want to make a script that will create ScriptableObject with information for each level in my game but i cant figure how to access and change the property of the array in the ScriptableObject (size and elements).
each ScriptableObject should have different array size and the elements should have randomized Vector3 values as in my script:
Thanks in advance for the help!
using UnityEngine;
using System.Collections;
using UnityEditor;
[ExecuteInEditMode]
public class CreateLevels : MonoBehaviour {
// Use this for initialization
void Start () {
Debug.Log("Started");
for (int i = 1; i < 499; i++)// number of levels to create
{
makeScriptbleObg.CreateMyAsset(i);
mScriptbleObj obj = Resources.Load<mScriptbleObj>("Assets / scripts / Levels / Lv" + i.ToString());
SerializedObject Level = new SerializedObject(obj);
SerializedProperty LevelNum = Level.FindProperty("levelNum");
LevelNum.intValue = i;
if (i < 20) {
for (int j = 0; j <5+i;j++)
{
Level.spawnPoints.Add(new Vector3(Random.Range(-2f, 2f), j * 3, 0));
Level.wiedthValues.Add(3);
Level.LavaSpeed = 1;
}
}
else if(i < 50)
{
for (int j = 0; j < 5 + i; j++)
{
Level.spawnPoints.Add(new Vector3(Random.Range(-2f, 2f), j * 3, 0));
Level.wiedthValues.Add(Random.Range(2f,3f));
Level.LavaSpeed = 1;
}
}
else if (i < 100)
{
for (int j = 0; j <Random.Range(54,80); j++)
{
Level.spawnPoints.Add(new Vector3(Random.Range(-2f, 2f), j * 3, 0));
Level.wiedthValues.Add(Random.Range(1.5f, 3f));
Level.LavaSpeed = 1;
}
}
else if (i < 200)
{
for (int j = 0; j < Random.Range(80, 120); j++)
{
Level.spawnPoints.Add(new Vector3(Random.Range(-2f, 2f), j * 3, 0));
Level.wiedthValues.Add(Random.Range(1.5f, 3f));
Level.LavaSpeed = 2;
}
}
else if (i < 400)
{
for (int j = 0; j < Random.Range(80, 120); j++)
{
Level.spawnPoints.Add(new Vector3(Random.Range(-2f, 2f), j * 3, 0));
Level.wiedthValues.Add(Random.Range(1.5f, 2.5f));
Level.LavaSpeed = 3;
}
}
else
{
for (int j = 0; j < Random.Range(80, 120); j++)
{
Level.spawnPoints.Add(new Vector3(Random.Range(-2f, 2f), j * 3, 0));
Level.wiedthValues.Add(Random.Range(1.3f, 2f));
Level.LavaSpeed = 3.2f;
}
}
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Editor script for scriptableobject not working. 1 Answer
How to get text from array or in bool? 1 Answer
ScriptableObject not Serializing? 0 Answers
Arrays Lists and Paradoxes 0 Answers