Hi everyone
I was working on Advanced AI Script.For which i had to make a Editor Script
I wanted to add Array(Using List for that) of classes to the Editor Script.
So After Trying a lot
i finally diceded to browse for it in Google Finall i found a soultion in (C#) but when i tried to impliment it
It seems to give Object reference not set to instace of object
Here is the script cut short
import System.Collections.Generic;
@CustomEditor(typeof(simpleAI))
@UnityEngine.SerializePrivateVariables
@CanEditMultipleObjects
class AIEditor extends Editor{
// Use this for initialization
@SerializeField
var AIScript:simpleAI;
@SerializeField
var AI_Script:SerializedObject;
@SerializeField
private var ShowIdlTransform:List.<boolean>;
private var Show:boolean;
function OnEnable(){
AI_Script = new SerializedObject (target);
AutoMap = AI_Script.FindProperty("AutoMapWaypoints");
}
function OnInspectorGUI(){
AIScript = target as simpleAI;
TransformName = AIScript.gameObject.transform.name;
super.OnInspectorGUI();
serializedObject.Update();
EditorGUILayout.Separator ();
AI_Script.Update();
var i:int=0;
for(var Idl:IdleTransform in AIScript.IdleTrans){
//for(var i:int =0;i<ShowIdlTransform.Count;i++){
EditorGUILayout.Foldout(ShowIdlTransform*,"Transform Parent Set #"+i); //<<<<<<<<<_---------------- PROBLEM HERE*
if(ShowIdlTransform*){*
ShowIdlTransform =
Idl.TheTransform = EditorGUILayout.ObjectField(“The Object”,Idl.TheTransform,typeof(Transform)) as Transform;
Idl.ItsParent = EditorGUILayout.ObjectField(“Its Parent”,Idl.ItsParent,typeof(Transform)) as Transform;
Idl.Transisition_Anim = EditorGUILayout.ObjectField(“The Transition Aniamtion”,Idl.Transisition_Anim,AnimationClip);
}
i++;
//}
}
EditorGUILayout.EndVertical();
if(GUILayout.Button(“?”)){
Show =!Show;
}
if(GUILayout.Button(“Add WeaponParent Transistioner”)){
AIScript.IdleTrans.Add(new IdleTransform());
ShowIdlTransform.Add(true);
}
}
AI_Script.ApplyModifiedProperties();
}
}
Here IdleTransform
is a class
simple AI
var IdleTrans:List.;
@System.Serializable
class IdleTransform{
var Transisition_Anim:AnimationClip;
var TheTransform:Transform;
var ItsParent:Transform;
}
-------------------------------## Solution ##-----------------
Edit
Hi all i figured out the solution the problem was unity was resetiing the list of ShowIdlTransform_
The solution was to Add this line
function Enable(){
ShowIdlTransform=new List.(new boolean[AIScript.IdleTrans.Count]);
}
and
Alter this
for(var i:int =0;i < AIScript.IdleTrans.Count;i++){
ShowIdlTransform = EditorGUILayout.Foldout(ShowIdlTransform*,“Transform Parent Set #”+i);*
if( ShowIdlTransform*){*
Idl.TheTransform = EditorGUILayout.ObjectField(“The Object”,Idl.TheTransform,typeof(Transform)) as Transform;_
Idl.ItsParent = EditorGUILayout.ObjectField(“Its Parent”,Idl.ItsParent,typeof(Transform)) as Transform;
}
}