コード例 #1
0
ファイル: BuildModelsJson.cs プロジェクト: ych1998/War
    /// <summary>
    /// JSON转换为多个对象.
    /// </summary>
    private void JsonToObject()
    {
        string jsonStr = File.ReadAllText(jsonPath);

        JsonData jsonData = JsonMapper.ToObject(jsonStr);

        for (int i = 0; i < jsonData.Count; ++i)
        {
            BuildItem item = JsonMapper.ToObject <BuildItem>(jsonData[i].ToJson());
            jsonList.Add(item);
        }

        for (int i = 0; i < jsonList.Count; ++i)
        {
            Vector3    pos = new Vector3(float.Parse(jsonList[i].PosX), float.Parse(jsonList[i].PosY), float.Parse(jsonList[i].PosZ));
            Quaternion rot = new Quaternion(float.Parse(jsonList[i].RotX), float.Parse(jsonList[i].RotY), float.Parse(jsonList[i].RotZ), float.Parse(jsonList[i].RotW));

            prefab_Model = Resources.Load <GameObject>("BuildModule/BuildModels/" + jsonList[i].Name);
            GameObject buildModel = GameObject.Instantiate <GameObject>(prefab_Model, pos, rot, m_Transform);

            // 初始化逻辑.
            buildModel.name  = jsonList[i].Name;
            buildModel.layer = LayerMask.NameToLayer("BuildModelEnd");
            MaterialModelBase mmb = buildModel.GetComponent <MaterialModelBase>();
            mmb.NormalModel();
            GameObject.Destroy(mmb);
        }
    }
コード例 #2
0
ファイル: BuildPanelController.cs プロジェクト: ych1998/War
    /// <summary>
    /// 设置建造模型的位置信息.
    /// </summary>
    private void SetModelPosition()
    {
        if (materialModel != null)
        {
            // 屋顶和吊灯可以上移.
            if (materialModel.name.Contains("Roof") || materialModel.name.Contains("Ceiling_Light"))
            {
                layerNum = ~(1 << LayerMask.NameToLayer("BuildModel"));
            }
            else
            {
                layerNum = 1 << 0;
            }

            ray = m_BuildPanelView.M_EnvCamera.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit, 15.0f, layerNum))
            {
                // 当前模型在吸附, 就不需要设置位置.
                MaterialModelBase mmb = materialModel.GetComponent <MaterialModelBase>();
                if (!mmb.IsAttach)
                {
                    materialModel.GetComponent <Transform>().position = hit.point;
                }

                // 当模型相隔足够远时, 不再吸附.
                if (Vector3.Distance(hit.point, materialModel.GetComponent <Transform>().position) > 3)
                {
                    mmb.IsAttach = false;
                }
            }
        }
    }
コード例 #3
0
ファイル: BuildPanelController.cs プロジェクト: ych1998/War
    /// <summary>
    /// 鼠标左键事件.
    /// </summary>
    private void LeftMouseButtonDown()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // 第一个空白区域相当于切换建造材料使用.
            if (currentItem == categoryItemList[0])
            {
                SetMaterialToNull();
                return;
            }

            if (currentMaterialModel == null)
            {
                isCategoryCtrl = false;
            }

            // 有建造材料模型, 隐藏建造UI.
            if (currentMaterialModel != null && isUIShow)
            {
                m_BuildPanelView.WheelBG_Transform.gameObject.SetActive(false);
                isUIShow       = false;
                isCategoryCtrl = true;
            }

            // 将实例化的材料回归默认颜色, 如果不能生成就直接退出.
            MaterialModelBase mmb = null;
            if (materialModel != null && !(mmb = materialModel.GetComponent <MaterialModelBase>()).CanPut)
            {
                return;
            }
            else if (materialModel != null && mmb.CanPut)
            {
                materialModel.name  = currentMaterialModel.name;
                materialModel.layer = LayerMask.NameToLayer("BuildModelEnd");
                mmb.NormalModel();
                GameObject.Destroy(mmb);
            }

            // 实例化建造材料.
            if (currentMaterialModel != null)
            {
                materialModel = GameObject.Instantiate <GameObject>(currentMaterialModel,
                                                                    m_BuildPanelView.Player_Transform.position + Vector3.forward * 10,
                                                                    Quaternion.identity, m_BuildPanelView.BuildModelsParent);
            }
        }
    }