示例#1
0
    private void Awake()
    {
        m_itemDatabase = new Dictionary <CollectibleItem.ItemID, FishStats>();
#if UNITY_EDITOR
        if (m_databaseSO == null && soAssetName != "")
        {
            m_databaseSO = (FishDatabaseSO)AssetDatabase.
                           LoadAssetAtPath(PATH_PREFIX + soAssetName + PATH_SUFFIX, typeof(CollectibleSO));
        }
#endif
    }
    public void ReadCSV()
    {
        LoadSprites();

        StreamReader reader = new StreamReader(m_inputFilePath);

        // Skip first 2 lines.
        reader.ReadLine();
        reader.ReadLine();

        CollectibleSO          itemSO    = (CollectibleSO)ScriptableObject.CreateInstance(typeof(CollectibleSO));
        FishDatabaseSO         fishSO    = (FishDatabaseSO)ScriptableObject.CreateInstance(typeof(FishDatabaseSO));
        List <CollectibleItem> items     = new List <CollectibleItem>();
        List <FishStats>       fishStats = new List <FishStats>();

        try
        {
            while (true)
            {
                if (reader.EndOfStream)
                {
                    break;
                }

                string   line      = reader.ReadLine();
                string[] splitLine = line.Split('\t');

                var currItem = new CollectibleItem
                {
                    id                = (CollectibleItem.ItemID)ConvertToInt(splitLine[0]),
                    displayName       = ConvertToString(splitLine[1]),
                    displayNamePlural = ConvertToString(splitLine[2], ConvertToString(splitLine[1])),
                    description       = ConvertToString(splitLine[3]),
                    sprite            = ConvertToSprite(splitLine[4]),
                };

                if (splitLine[5] != "")
                {
                    FishStats fish = new FishStats
                    {
                        id              = currItem.id,
                        DecayRate       = 1.0f / ConvertToFloat(splitLine[5]),
                        CompletionRate  = 1.0f / ConvertToFloat(splitLine[6]),
                        JumpIntervalSec = ConvertToFloat(splitLine[7]),
                        FishLerpRate    = 1.0f / ConvertToFloat(splitLine[8]),
                        MinJumpDistance = ConvertToVec2(splitLine[9], splitLine[11], Vector2.zero),
                        MaxJumpDistance = ConvertToVec2(splitLine[10], splitLine[12], Vector2.zero),
                        MinBounds       = ConvertToVec2(splitLine[13], splitLine[15], Vector2.zero),
                        MaxBounds       = ConvertToVec2(splitLine[14], splitLine[16], Vector2.zero),
                    };

                    fishStats.Add(fish);
                }

                items.Add(currItem);
            }
        }
        finally
        {
            itemSO.items     = items.ToArray();
            fishSO.fishStats = fishStats.ToArray();
            reader.Close();
            AssetDatabase.CreateAsset(itemSO, m_outputItemFilePath);
            AssetDatabase.SaveAssets();
            AssetDatabase.CreateAsset(fishSO, m_outputFishFilePath);
            AssetDatabase.SaveAssets();
        }
    }