private void SerializeScriptableObject(int assetId, ScriptableObject scriptableObject, List <ScriptableObjectData> outputList)
        {
            var type   = scriptableObject.GetType();
            var fields = GetSerializeableFields(type);

            if (!fields.Any())
            {
                return;
            }

            var data = new ScriptableObjectData
            {
                Name = scriptableObject.name,
                Id   = assetId,
            };

            outputList.Add(data);

            foreach (var f in fields)
            {
                var value     = f.GetValue(scriptableObject);
                var jsonValue = JsonConvert.SerializeObject(value, Formatting.None, mJsonSettings);
                data.Fields.Add(new FieldData()
                {
                    Name = f.Name,
                    Json = jsonValue,
                });
            }
        }
    // private variables
    //private float counter;

    void Start()
    {
        // Set the ScriptableObjectData variables.
        soData = gameObject.GetComponent <ScriptableObjectData>();

        personInDoor = personManager.GetComponent <PersonManager>().person.GetComponent <Person>();

        // Set a new person
        initNewPerson(0);
    }
示例#3
0
    //Handles building items/creature parts
    protected void BuildItem(string _dir, ItemTypeStruct _ItemStruct)
    {
        GameObject item = new GameObject();

        if (currentWindowName == "Weapon Builder" || currentWindowName == "Armour Builder" || currentWindowName == "Creature Builder")
        {
            if (!aspectMode)
            {
                item = GameObject.Find("PartViewHolders").transform.GetChild(0).gameObject;
            }
            else if (aspectMode)
            {
                item = GameObject.Find("PartViewHolders").transform.GetChild(1).gameObject;
            }
        }
        if (currentWindowName.Contains("Part") || currentWindowName == "Potion Builder" || currentWindowName == "Material Builder")
        {
            if (aspectMode)
            {
                if (item.GetComponent <MeshFilter>() == null)
                {
                    item.AddComponent <MeshFilter>().mesh = objectData.Mesh;
                }
                if (item.GetComponent <MeshRenderer>() == null)
                {
                    item.AddComponent <MeshRenderer>().material = objectData.Mat;
                }
                if (item.GetComponent <BoxCollider>() == null)
                {
                    item.AddComponent <BoxCollider>();
                }
            }
            else
            {
                if (item.GetComponent <SpriteRenderer>() == null)
                {
                    item.AddComponent <SpriteRenderer>().sprite = objectData.Sprite;
                }
                item.GetComponent <SpriteRenderer>().material = objectData.Mat;
                if (item.GetComponent <BoxCollider2D>() == null)
                {
                    item.AddComponent <BoxCollider2D>();
                }
            }
            item.AddComponent <ScriptableObjectHolder>().data = objectData;
        }
        item.name = itemName;
        string itemNameCombined = itemName + ".prefab";

        if (itemNameCombined != "" && objectData != null)
        {
            if (item.GetComponent <ScriptableObjectHolder>() != null)
            {
                ScriptableObjectData itemData = CreateInstance <ScriptableObjectData>();
                if (_ItemStruct.isFullItem)
                {
                    itemData = Instantiate(itemBaseData);
                }
                else
                {
                    itemData = Instantiate(objectData);
                }
                if (!aspectMode)
                {
                    GameObject.Find("PartViewHolders").transform.GetChild(0).gameObject.name = "PartHolder2D";
                }
                else
                {
                    GameObject.Find("PartViewHolders").transform.GetChild(1).gameObject.name = "PartHolder3D";
                }
                itemData.AspectMode = aspectMode;
                foreach (int i in Enum.GetValues(typeof(Rarity)))
                {
                    if (rarityID == i)
                    {
                        itemData.Rarity = (Rarity)i;
                    }
                }
                AssetDatabase.CreateAsset(itemData, "Assets/Resources/BuiltItems/" + folderNames[m_saveDirIndex] + "/" + itemName + ".asset");
                item.GetComponent <ScriptableObjectHolder>().data = (ScriptableObjectData)AssetDatabase.LoadAssetAtPath("Assets/Resources/BuiltItems/" +
                                                                                                                        folderNames[m_saveDirIndex] + "/" + itemName + ".asset", typeof(ScriptableObjectData));
                Debug.Log("Building item");
                if (m_holder.transform.GetChild(0).GetChild(m_slotIndex).GetComponent <SpriteRenderer>() != null)
                {
                    m_holder.transform.GetChild(0).GetChild(m_slotIndex).GetComponent <SpriteRenderer>().color = Color.white;
                }
                PrefabUtility.SaveAsPrefabAsset(item, "Assets/Resources/BuiltItems/" + folderNames[m_saveDirIndex] + "/" + itemNameCombined);
                AssetDatabase.Refresh();
                for (int i = 0; i < m_itemPos.Length; ++i)
                {
                    m_itemPos[i] = new Vector3(0, 0, 0);
                }
            }
            if (currentWindowName.Contains("Part") || currentWindowName == "Potion Builder" || currentWindowName == "Material Builder")
            {
                DestroyImmediate(GameObject.Find(item.name));
            }
            ResetSlotValues();
            DestroyImmediate(GameObject.Find("New Game Object"));
            ClearObjectData();
        }
    }
示例#4
0
    //Contains the basic blocks for a window
    protected void BaseFunction()
    {
        CreateLabel(25, new RectOffset(5, 0, 5, 0), currentWindowName);
        LoadFolders();
        if (m_loadData)
        {
            objectData     = Resources.Load <ScriptableObjectData>("BuiltItems/Utility/ScriptableObjectData/Material");
            Rarities       = Resources.LoadAll("BuiltItems/Utility/ScriptableObjectData/RarityData/", typeof(RarityBaseData));
            itemBaseData   = Resources.Load <ItemBase>("BuiltItems/Utility/ScriptableObjectData/ItemBase");
            m_holder       = GameObject.Find("PartViewHolders").transform;
            m_slot2DPrefab = Resources.Load <GameObject>("BuiltItems/Utility/Slot2D");
            m_slot3DPrefab = Resources.Load <GameObject>("BuiltItems/Utility/Slot3D");
            foreach (RarityBaseData r in Rarities)
            {
                if (!RaritiesList.Contains(r))
                {
                    RaritiesList.Add(r);
                }
            }
            ViewItem(m_holder.GetChild(0).gameObject);
            Debug.Log("Loading data");
            m_loadData = false;
        }

        for (int i = 0; i < slotAmount; ++i)
        {
            if (!m_slotNames.Contains("Slot " + (i + 1)))
            {
                m_slotNames.Add("Slot " + (i + 1));
            }
        }
        for (int i = 0; i < m_buttonNames.Length - 2; ++i)
        {
            if (m_buttonNames[i].Contains(currentWindowName))
            {
                CreateLabel(15, new RectOffset(5, 0, 15, 0), "Item + Creature Name");
                itemName = GUILayout.TextField(itemName);
                CreateLabel(15, new RectOffset(5, 0, 25, 0), "Description");
                itemDescription = GUILayout.TextField(itemDescription);
                CreateLabel(15, new RectOffset(5, 0, 15, 0), "Current aspect mode " + m_aspectName);
                if (aspectMode)
                {
                    m_aspectName = "3D";
                }
                else
                {
                    m_aspectName = "2D";
                }
                if (GUILayout.Button("Change Aspect Mode"))
                {
                    if (aspectMode)
                    {
                        aspectMode = false;
                    }
                    else
                    {
                        aspectMode = true;
                    }
                    PartIDs = new int[slotAmount];
                }
                rarityID = EditorGUILayout.Popup("Rarity", rarityID, Enum.GetNames(typeof(Rarity)));
                if (currentWindowName == "Weapon Part Builder" || currentWindowName == "Armour Part Builder" || currentWindowName == "Material Builder" ||
                    currentWindowName == "Creature Part Builder" || currentWindowName == "Potion Builder")
                {
                    DisplayItemSpriteMesh();
                }
                switch (currentWindowName)
                {
                case "Armour Builder":
                    m_type     = ItemType.eArmourPart;
                    slotAmount = 7;
                    break;

                case "Weapon Builder":
                    m_type     = ItemType.eWeaponPart;
                    slotAmount = 4;
                    break;

                case "Creature Builder":
                    m_type     = ItemType.eCreaturePart;
                    slotAmount = 17;
                    break;

                case "Potion Builder":
                case "Material Builder":
                case "Weapon Part Builder":
                case "Armour Part Builder":
                    m_type     = ItemType.eMaterial;
                    slotAmount = 1;
                    break;

                default:
                    break;
                }
                CreateLabel(15, new RectOffset(5, 0, 15, 0), "Save To:");
                m_saveDirIndex = EditorGUILayout.Popup("", m_saveDirIndex, folderNames.ToArray());
                break;
            }
        }
    }
示例#5
0
文件: Character.cs 项目: SrVage/rpg
 private void Init(ScriptableObjectData data)
 {
     _health = data.health;
     _attack = data.attack;
 }
 void Start()
 {
     // set the object data to the correct script instance.
     objectData = GameObject.Find("Game Manager").GetComponent <ScriptableObjectData>();
 }