public static Prefab Load(JObject json) { // Transform: Transform t; if (json.ContainsKey("transform")) { t = Transform.FromJson(json["transform"] as JObject); } else { t = new Transform(); } var res = new Prefab(t); // Components if (json.ContainsKey("components")) { foreach (var item in json["components"] as JArray) { var o = item as JObject; var type = Type.GetType(o["type"] as JString); if (o.ContainsKey("args")) { var jargs = o["args"] as JArray; var args = new List <object>(); foreach (var arg in jargs) { var resarg = arg.ToObject(); if (arg.IsString) { var str = (string)(arg as JString); if (str.StartsWith("@")) { // preprocessing directive: str = str.Substring(1); resarg = PreProcessingDirective(str); } } else if (arg.IsArray) { } args.Add(resarg); } res.AddComp(type, args.ToArray()); } else { res.AddComp(type); } } } // Children: if (json.ContainsKey("children")) { foreach (var childjson in json["children"] as JArray) { res.AddChild(Load(childjson as JObject)); } } return(res); }
public Prefab AddChild(Prefab child) { children.Add(child); return(this); }