コード例 #1
0
ファイル: PTools.cs プロジェクト: xfs81150082/ET-RPG-DEMO
    static void ExportAllNONStaticBody()
    {
        string fullPath = AssetDatabase.GetAssetPath(Selection.activeObject);

        Debug.Log(fullPath);

        //这里根据物体名字来记录对应的PBox数据
        Dictionary <string, PBoxData>    boxDataDic    = new Dictionary <string, PBoxData>();
        Dictionary <string, PCircleData> circleDataDic = new Dictionary <string, PCircleData>();


        if (Directory.Exists(fullPath))
        {
            DirectoryInfo dirInfo = new DirectoryInfo(fullPath);
            FileInfo[]    files   = dirInfo.GetFiles("*.prefab"); //包括子目录
                        Debug.Log(files.Length);

            for (int i = 0; i < files.Length; i++)
            {
                if (files[i].Name.EndsWith(".prefab"))
                {
                    GameObject obj = AssetDatabase.LoadAssetAtPath(fullPath + "/" + files[i].Name, typeof(GameObject)) as GameObject;

                    PBoxColliderHelper pBoxCollider = obj.GetComponentInChildren <PBoxColliderHelper>();
                    if (pBoxCollider == null)
                    {
                        PCircleColliderHelper pCircleCollider = obj.GetComponentInChildren <PCircleColliderHelper>();
                        if (pCircleCollider == null)
                        {
                            continue;
                        }

                        PCircleData pCircleData = new PCircleData()
                        {
                            eulerAnglesY = pCircleCollider.transform.eulerAngles.y,
                            bodyType     = pCircleCollider.bodyType
                        };
                        pCircleData.offset.Fill(pCircleCollider.offset);
                        pCircleData.halfHeight = pCircleCollider.height;
                        pCircleData.radius     = pCircleCollider.radius;
                        string key = files[i].Name.Replace(".prefab", "");
                        Debug.Log("Key  " + key);
                        circleDataDic.Add(key, pCircleData);
                    }
                    else
                    {
                        PBoxData pBoxData = new PBoxData()
                        {
                            eulerAnglesY = pBoxCollider.transform.eulerAngles.y,
                            bodyType     = pBoxCollider.bodyType
                        };
                        pBoxData.offset.Fill(pBoxCollider.offset);
                        pBoxData.pos.Fill(Vector3.zero); // 因为是非静态物体,所以这里记录位置没用,统一用zero
                        pBoxData.size.Fill(pBoxCollider.size);
                        string key = files[i].Name.Replace(".prefab", "");
                        Debug.Log("Key  " + key);
                        boxDataDic.Add(key, pBoxData);
                    }
                }
            }
        }
        else
        {
            Debug.Log("资源路径不存在");
        }
        string boxsFolder = Application.dataPath + serverPath + "BoxsData/";

        Directory.CreateDirectory(boxsFolder);
        string circleFolder = Application.dataPath + serverPath + "CirclesData/";

        Directory.CreateDirectory(circleFolder);
        if (boxDataDic.Count > 0)
        {
            Serialize(boxsFolder + Selection.activeObject.name + ".bytes", boxDataDic);
        }
        if (circleDataDic.Count > 0)
        {
            Serialize(circleFolder + Selection.activeObject.name + ".bytes", circleDataDic);
        }
        Log.Debug("导出成功!");
    }
コード例 #2
0
        public static void AddCollider_CircleData(Unit unit, UnitData unitData, bool isSensor, PCircleData pCircleData)
        {
            PCircleShape pCircleShape = new PCircleShape()
            {
                eulerAnglesY = pCircleData.eulerAnglesY,
                bodyType     = pCircleData.bodyType,
                unitData     = unitData,
                isSensor     = isSensor
            };

            pCircleShape.offset     = pCircleData.offset.ToV3();
            pCircleShape.radius     = pCircleData.radius;
            pCircleShape.halfHeight = pCircleData.halfHeight;


            unit.AddComponent <P2DBodyComponent, PBaseShape>(pCircleShape);
        }