少年修仙传客户端代码仓库
client_Wu Xijin
2019-03-16 7b207984dca60478296cc3044c4dcd9afdd4eea6
3335 修改ui 3d模型展示实现方式.
2个文件已添加
5个文件已修改
222 ■■■■ 已修改文件
System/Equip/EquipLevelSelectBehaviour.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipGem/EquipStrengthHeadBehaviour.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarLevelSelectBehaviour.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipTrain/EquipTrainLevelBehaviour.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/GestureCatcher.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/GestureCatcher.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DModelExhibition.cs 146 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Equip/EquipLevelSelectBehaviour.cs
@@ -45,7 +45,7 @@
        private void DisplayBaseInfo()
        {
            var realmConfig = RealmConfig.Get(this.equipSet.realm);
            m_LevelName.text = string.Format("{0}装备", realmConfig.Name);
            m_LevelName.text = Language.Get("RealmEquipName", realmConfig.Name);
            var unLocked = equipSet.unLocked;
            m_LockContainer.gameObject.SetActive(!unLocked);
            m_Redpoint.redpointId = this.equipSet.redpoint.id;
@@ -75,7 +75,7 @@
            else
            {
                var config = RealmConfig.Get(this.equipSet.realm);
                SysNotifyMgr.Instance.ShowTip("RealmEquipNoEnough", config.Name, string.Format("{0}装备", config.Name));
                SysNotifyMgr.Instance.ShowTip("RealmEquipNoEnough", config.Name, Language.Get("RealmEquipName", config.Name));
            }
        }
System/EquipGem/EquipStrengthHeadBehaviour.cs
@@ -8,9 +8,10 @@
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class EquipStrengthHeadBehaviour: CellView
    public class EquipStrengthHeadBehaviour : CellView
    {
        [SerializeField] Text m_EquipHeadName;
        [SerializeField] Transform m_UpArrow;
@@ -34,7 +35,7 @@
                var realmConfig = RealmConfig.Get(equipSet.realm);
                if (realmConfig != null)
                {
                    m_EquipHeadName.text = string.Format("{0}装备", realmConfig.Name);
                    m_EquipHeadName.text = Language.Get("RealmEquipName", realmConfig.Name);
                }
            }
System/EquipStar/EquipStarLevelSelectBehaviour.cs
@@ -26,7 +26,7 @@
        {
            var equipSet = equipModel.GetEquipSet(level);
            var realmConfig = RealmConfig.Get(equipSet.realm);
            this.m_Title.text = string.Format("{0}装备", realmConfig.Name);
            this.m_Title.text = Language.Get("RealmEquipName", realmConfig.Name);
            this.level = level;
            m_Select.SetListener(Select);
System/EquipTrain/EquipTrainLevelBehaviour.cs
@@ -7,9 +7,11 @@
using System.Collections.Generic;
using UnityEngine.UI;
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class EquipTrainLevelBehaviour : MonoBehaviour {
    public class EquipTrainLevelBehaviour : MonoBehaviour
    {
        [SerializeField] Button m_Select;
        [SerializeField] Image m_BackGround;
@@ -26,7 +28,7 @@
        {
            var equipSet = equipModel.GetEquipSet(level);
            var realmConfig = RealmConfig.Get(equipSet.realm);
            this.m_Title.text = string.Format("{0}装备", realmConfig.Name);
            this.m_Title.text = Language.Get("RealmEquipName", realmConfig.Name);
            this.level = level;
            m_Select.SetListener(Select);
UI/Common/GestureCatcher.cs
New file
@@ -0,0 +1,43 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Saturday, March 16, 2019
//--------------------------------------------------------
using System;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
public class GestureCatcher : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    BizEvent<Vector2> m_OnDrag = new BizEvent<Vector2>();
    Vector2 prePosition = Vector2.zero;
    public void SetDragListener(Action<Vector2> callBack)
    {
        m_OnDrag.Dispose();
        m_OnDrag += callBack;
    }
    public void RemoveListener()
    {
        m_OnDrag.Dispose();
    }
    public void OnBeginDrag(PointerEventData eventData)
    {
        prePosition = eventData.position;
    }
    public void OnDrag(PointerEventData eventData)
    {
        var deltaPosition = eventData.position - prePosition;
        m_OnDrag.Invoke(deltaPosition);
        prePosition = eventData.position;
    }
    public void OnEndDrag(PointerEventData eventData)
    {
        prePosition = eventData.position;
    }
}
UI/Common/GestureCatcher.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c25c35ceba2cf9140a2ed7743a3e6dec
timeCreated: 1552721974
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
UI/Common/UI3DModelExhibition.cs
@@ -20,10 +20,8 @@
        [SerializeField] Transform m_NPCShowPoint;
        [SerializeField] Transform m_DialogPoint;
        [SerializeField] Transform m_EquipmentPoint;
        [SerializeField] Transform m_GodWeaponEffectPoint;
        [SerializeField] Camera m_ShowCamera;
        [SerializeField] bool m_Interactable = false;
        [SerializeField] UI3DModelInteractProcessor m_InteractProcessor;
        [SerializeField] ColorCorrectionCurves m_CameraColor;
        public bool interactable {
@@ -64,7 +62,6 @@
        Vector2 prePosition = Vector2.zero;
        PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        public static UI3DModelExhibition Instance { get; private set; }
@@ -250,31 +247,13 @@
                playerModel.StandUp();
            }
            if (rawImage != null)
            {
                var x = rawImage.rectTransform.rect.height * 4f / 3;
                var y = rawImage.rectTransform.rect.height;
                rawImage.rectTransform.sizeDelta = new Vector2(x, y);
                rawImage.texture = m_ShowCamera.targetTexture;
                rawImage.material = MaterialUtility.GetGUIRenderTextureMaterial();
                m_InteractProcessor.rectTransform = rawImage.rectTransform;
            }
            BindGestureCatcher(rawImage, interactable);
        }
        public void ShowHourse(int modelId, RawImage rawImage)
        {
            StopShow();
            m_ShowCamera.enabled = true;
            if (rawImage != null)
            {
                var x = rawImage.rectTransform.rect.height * 4f / 3;
                var y = rawImage.rectTransform.rect.height;
                rawImage.rectTransform.sizeDelta = new Vector2(x, y);
                rawImage.texture = m_ShowCamera.targetTexture;
                rawImage.material = MaterialUtility.GetGUIRenderTextureMaterial();
                m_InteractProcessor.rectTransform = rawImage.rectTransform;
            }
            var instance = UI3DModelFactory.LoadUIHorse(modelId);
            if (instance == null)
@@ -298,6 +277,8 @@
            ResetCameraColor();
            ShowNpcEffect(instance.transform, modelConfig.ResourcesName);
            BindGestureCatcher(rawImage, interactable);
        }
        private GameObject ObjEquipment;
@@ -320,30 +301,12 @@
            instance.transform.SetParentEx(m_EquipmentPoint, Vector3.zero, localEulerAngles, Vector3.one);
            instance.SetActive(true);
            ResetCameraColor();
            if (rawImage != null)
            {
                var x = rawImage.rectTransform.rect.height * 4f / 3;
                var y = rawImage.rectTransform.rect.height;
                rawImage.rectTransform.sizeDelta = new Vector2(x, y);
                rawImage.texture = m_ShowCamera.targetTexture;
                rawImage.material = MaterialUtility.GetGUIRenderTextureMaterial();
                m_InteractProcessor.rectTransform = rawImage.rectTransform;
            }
            BindGestureCatcher(rawImage, interactable);
        }
        public void ShowWing(int _modelId, Vector3 _localEulerAngles, RawImage _rawImage)
        {
            StopShow();
            if (_rawImage != null)
            {
                var x = _rawImage.rectTransform.rect.height * 4f / 3;
                var y = _rawImage.rectTransform.rect.height;
                _rawImage.rectTransform.sizeDelta = new Vector2(x, y);
                _rawImage.texture = m_ShowCamera.targetTexture;
                _rawImage.material = MaterialUtility.GetGUIRenderTextureMaterial();
                m_InteractProcessor.rectTransform = _rawImage.rectTransform;
            }
            var instance = UI3DModelFactory.LoadUIWing(_modelId);
            if (instance == null)
@@ -370,6 +333,8 @@
            {
                animator.Play("UI_Idle_Single");
            }
            BindGestureCatcher(_rawImage, interactable);
        }
        public void ShowNPC(RawImage rawImage, UI3DNPCExhibitionData data)
@@ -445,15 +410,7 @@
                interactable = true;
                m_ShowCamera.enabled = true;
                if (rawImage != null)
                {
                    var x = rawImage.rectTransform.rect.height * 4f / 3;
                    var y = rawImage.rectTransform.rect.height;
                    rawImage.rectTransform.sizeDelta = new Vector2(x, y);
                    rawImage.texture = m_ShowCamera.targetTexture;
                    rawImage.material = MaterialUtility.GetGUIRenderTextureMaterial();
                    m_InteractProcessor.rectTransform = rawImage.rectTransform;
                }
                BindGestureCatcher(rawImage, interactable);
            }
            else
            {
@@ -471,15 +428,6 @@
            StopShow();
            m_ShowCamera.enabled = true;
            m_NPCId = _npcId;
            if (_rawImage != null)
            {
                var x = _rawImage.rectTransform.rect.height * 4f / 3;
                var y = _rawImage.rectTransform.rect.height;
                _rawImage.rectTransform.sizeDelta = new Vector2(x, y);
                _rawImage.texture = m_ShowCamera.targetTexture;
                _rawImage.material = MaterialUtility.GetGUIRenderTextureMaterial();
                m_InteractProcessor.rectTransform = _rawImage.rectTransform;
            }
            var instance = UI3DModelFactory.LoadUINPC(_npcId);
            if (instance == null)
@@ -524,6 +472,7 @@
            ResetCameraColor(_gray);
            m_CameraColor.saturation = _gray ? 0.08f : 1f;
            BindGestureCatcher(_rawImage, interactable);
        }
        public void StopShow()
@@ -615,22 +564,6 @@
            m_CameraColor.enabled = _enable;
        }
        private void Awake()
        {
            m_InteractProcessor.clickEvent += OnClick3DModel;
            m_InteractProcessor.beginDragEvent += OnBeginDrag3DModel;
            m_InteractProcessor.endDragEvent += OnEndDrag3DModel;
            m_InteractProcessor.dragingEvent += OnDrag3DModel;
        }
        private void OnDestroy()
        {
            m_InteractProcessor.clickEvent -= OnClick3DModel;
            m_InteractProcessor.beginDragEvent -= OnBeginDrag3DModel;
            m_InteractProcessor.endDragEvent -= OnEndDrag3DModel;
            m_InteractProcessor.dragingEvent -= OnDrag3DModel;
        }
        private void LateUpdate()
        {
            if (isShowinEquipment && ObjEquipment != null)
@@ -646,55 +579,26 @@
            }
        }
        private void OnBeginDrag3DModel(Vector2 _position)
        private void OnDrag3DModel(Vector2 deltaPosition)
        {
            if (!m_Interactable)
            {
                return;
            }
            prePosition = _position;
        }
        private void OnDrag3DModel(Vector2 _position)
        {
            if (!m_Interactable)
            {
                return;
            }
            var delta = _position - prePosition;
            if (isShowingPlayer)
            {
                m_PlayerShowPoint.localEulerAngles += new Vector3(0, -delta.x, 0);
                m_PlayerShowPoint.localEulerAngles += new Vector3(0, -deltaPosition.x, 0);
            }
            if (isShowingHorse)
            {
                m_HorseShowPoint.localEulerAngles += new Vector3(0, -delta.x, 0);
                m_HorseShowPoint.localEulerAngles += new Vector3(0, -deltaPosition.x, 0);
            }
            if (isShowingNPC)
            {
                m_NPCShowPoint.localEulerAngles += new Vector3(0, -delta.x, 0);
            }
            prePosition = _position;
        }
        private void OnEndDrag3DModel(Vector2 _position)
        {
            if (!m_Interactable)
            {
                return;
            }
        }
        private void OnClick3DModel()
        {
            if (!m_Interactable)
            {
                return;
                m_NPCShowPoint.localEulerAngles += new Vector3(0, -deltaPosition.x, 0);
            }
        }
@@ -732,6 +636,32 @@
            }
            m_BindEffectList.Clear();
        }
        private void BindGestureCatcher(RawImage rawImage, bool interable)
        {
            if (rawImage == null)
            {
                return;
            }
            var x = rawImage.rectTransform.rect.height * 4f / 3;
            var y = rawImage.rectTransform.rect.height;
            rawImage.rectTransform.sizeDelta = new Vector2(x, y);
            rawImage.texture = m_ShowCamera.targetTexture;
            rawImage.material = MaterialUtility.GetGUIRenderTextureMaterial();
            if (interable)
            {
                rawImage.raycastTarget = true;
                var gestureCatcher = rawImage.AddMissingComponent<GestureCatcher>();
                gestureCatcher.SetDragListener(OnDrag3DModel);
            }
            else
            {
                rawImage.raycastTarget = false;
            }
        }
    }
    public struct UI3DPlayerExhibitionData