コード例 #1
0
    public static void SetScriptableData(Type _type)
    {
        //	string filePath = SystemSetting.GetAssetBundleListPath ()+"CSV.csv";

        //プレハブにスクリプタブルオブジェクトを設置
        UnityEngine.Object[] assets;
        string assetName = SystemSetting.GetAssetBundleDataFolder() + "AssetBundleDataAsset";

        assets = Resources.LoadAll(assetName);

        AssetBundleData  tmp     = new AssetBundleData();
        ScriptableObject sObject = null;

        foreach (UnityEngine.Object asset in assets)
        {
            if (asset is AssetBundleData)
            {
                tmp     = (AssetBundleData)asset;
                sObject = (ScriptableObject)asset;
            }
        }
        List <AssetBundleData.Param> listData = GetListDataFromCSV(_type);

        tmp.list = listData;

        //最後に保存して変更を確定
        EditorUtility.SetDirty(sObject);
    }
コード例 #2
0
    //プレハブを作ってスクリプタブルオブジェクトをアタッチするところまで.
    public static void CreateComponents(Type _type)
    {
        string name       = "target";
        string outputPath = SystemSetting.GetAssetBundleListPath() + "Prefab.prefab";


        GameObject gameObject = EditorUtility.CreateGameObjectWithHideFlags(
            name,
            HideFlags.HideInHierarchy,
            typeof(AssetBundleDataHolder)
            );

        //プレハブにスクリプタブルオブジェクトを設置
        UnityEngine.Object[] assets;

        string assetName = SystemSetting.GetAssetBundleDataFolder() + "AssetBundleDataAsset";

        assets = Resources.LoadAll(assetName);
        Debug.LogWarning("GetObj :" + assetName.ToString());


        AssetBundleData tmp = new AssetBundleData();

        foreach (UnityEngine.Object asset in assets)
        {
            if (asset is AssetBundleData)
            {
                tmp = (AssetBundleData)asset;
            }
        }

        AssetBundleDataHolder holder = gameObject.GetComponent <AssetBundleDataHolder> ();

        holder.assetBundleData = tmp;

        SetScriptableData(typeof(AssetBundleData));

        PrefabUtility.CreatePrefab(outputPath, gameObject, ReplacePrefabOptions.ReplaceNameBased);
        Editor.DestroyImmediate(gameObject);
    }
コード例 #3
0
    public static List <AssetBundleData.Param> GetListDataFromCSV(Type _dataType)
    {
        string filePath = SystemSetting.GetAssetBundleDataFolder() + _dataType.Name + "";
        //string filePath = SystemSetting.GetResourcesCSVFilePath() + _dataType.Name + "CSV";


        TextAsset csv = (TextAsset)Resources.Load(filePath, typeof(TextAsset)) as TextAsset;

        FieldInfo[]   fieldInfoList           = CSMaker.GetFieldInfo(typeof(AssetBundleData.Param));
        List <string> memberNameList          = CSMaker.GetMemberList(typeof(AssetBundleData.Param));
        List <AssetBundleData.Param> listData = new List <AssetBundleData.Param>();

        StringReader reader = new StringReader(csv.text);

        Type curType = typeof(AssetBundleData.Param);


        Debug.LogWarning("DataSet :" + csv);

        int rowNum = -1;

        while (reader.Peek() > -1)
        {
            AssetBundleData.Param lineData = new AssetBundleData.Param();
            int columnCount = 0;

            string   line   = reader.ReadLine();
            string[] values = line.Split(',');

            rowNum++;
            //0行はタイトルなので飛ばす
            if (rowNum == 0)
            {
                continue;
            }

            foreach (string item in values)
            {
                string    columnType      = memberNameList[columnCount];
                FieldInfo memberFieldInfo = fieldInfoList[columnCount];

                Debug.LogWarning("columnType :" + columnType.ToString());
                Debug.LogWarning("Field :" + memberFieldInfo.FieldType.ToString());

                if (memberFieldInfo.FieldType.ToString() == "System.Int32")
                {
                    int setNumber = int.Parse(item);
                    curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { setNumber });
                }
                else if (memberFieldInfo.FieldType.ToString() == "System.Single")
                {
                    float setNumber = float.Parse(item);
                    curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { setNumber });
                }
                else if (memberFieldInfo.FieldType.ToString() == "System.String")
                {
                    string setString = item.Substring(1, item.Length - 2);
                    curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { setString });
                }
                else if (memberFieldInfo.FieldType.ToString() == "System.Boolean")
                {
                    if (item == "1")
                    {
                        curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { true });
                    }
                    else
                    {
                        curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { false });
                    }
                }
                else
                {
                    Debug.LogError("データ定義に異常があります!!!!!!!" + memberFieldInfo.FieldType);
                    //異常なデータは出力してはいけないので強制停止
                    break;
                }

                columnCount++;
            }
            listData.Add(lineData);
        }
        return(listData);
    }