Browse Source

手卡UI

pull/24/head
45 2 years ago
parent
commit
601be1cae5
  1. 11
      ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/Card_v01.prefab
  2. 129
      ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity
  3. 12
      ColorlessWorld-2024-4-2/Assets/Scenes/Shop.unity
  4. 111
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs
  5. 162
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOnMouseEnter.cs
  6. 19
      ColorlessWorld-2024-4-2/Assets/Scripts/UI/CardActiveSort/CardActiveSort.cs

11
ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/Card_v01.prefab

@ -907,6 +907,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
originalParent: {fileID: 0}
originalpoint: {x: 0, y: 0, z: 0}
originalScale: {x: 0, y: 0, z: 0}
eventSystem: {fileID: 0}
ainPanle: {fileID: 1075869202937435496}
currentNode: {fileID: 0}
@ -914,6 +915,7 @@ MonoBehaviour:
layerMask:
serializedVersion: 2
m_Bits: 64
cardOnMouseEnter: {fileID: 0}
--- !u!225 &2967471168845626985
CanvasGroup:
m_ObjectHideFlags: 0
@ -938,6 +940,15 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 523596fd7703bbe44a0c37d83fd5c880, type: 3}
m_Name:
m_EditorClassIdentifier:
cardDrag: {fileID: 0}
targetScale: {x: 0, y: 0, z: 0}
originScale: {x: 0, y: 0, z: 0}
speed: 4
moveOffset: 100
thisIndexInIndex: 0
originPoint: {x: 0, y: 0, z: 0}
UpperOffset: {x: 0, y: 100, z: 0}
originRotation: {x: 0, y: 0, z: 0}
--- !u!1 &3523919461092501418
GameObject:
m_ObjectHideFlags: 0

129
ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity

@ -3243,7 +3243,7 @@ RectTransform:
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 959299392}
- {fileID: 1998717001}
- {fileID: 563103080}
m_Father: {fileID: 196188496}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -3827,7 +3827,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -1825}
m_AnchoredPosition: {x: 0, y: -2480}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &573479786
@ -6085,16 +6085,16 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 959299391}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.54, y: 1.54, z: 1.54}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 469385439}
m_Father: {fileID: 1998717001}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -436}
m_AnchoredPosition: {x: 0, y: -39}
m_SizeDelta: {x: 1246.8, y: 252.24341}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &959299393
@ -6173,8 +6173,9 @@ MonoBehaviour:
m_EditorClassIdentifier:
cardCount: 0
targrtPoint: {fileID: 563103079}
radius: 1400
angleIncrement: 5
radius: 2000
angleIncrement: 3
preparePoint: {fileID: 1239251607}
cardPointDataList:
- pivot: {x: 2.63, y: 10}
rotationZ: 6.95
@ -7270,6 +7271,41 @@ Transform:
m_Children: []
m_Father: {fileID: 348176937}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1239251607
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1239251608}
m_Layer: 5
m_Name: PreparePoint
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1239251608
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1239251607}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1998717001}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 107}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1242608528
GameObject:
m_ObjectHideFlags: 0
@ -11619,6 +11655,83 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1978148439}
m_CullTransparentMesh: 1
--- !u!1 &1998717000
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1998717001}
- component: {fileID: 1998717003}
- component: {fileID: 1998717002}
m_Layer: 5
m_Name: ScalePanel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1998717001
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1998717000}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.54, y: 1.54, z: 1.54}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 959299392}
- {fileID: 1239251608}
m_Father: {fileID: 469385439}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -8.1971, y: -372.5777}
m_SizeDelta: {x: 658.744, y: 217.4322}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1998717002
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1998717000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.40392157}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1998717003
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1998717000}
m_CullTransparentMesh: 1
--- !u!1 &2012988517
GameObject:
m_ObjectHideFlags: 0

12
ColorlessWorld-2024-4-2/Assets/Scenes/Shop.unity

@ -2293,24 +2293,18 @@ MonoBehaviour:
m_GameObject: {fileID: 378610458}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b93371d37dce58d4c9c2aa4a5f8bea43, type: 3}
m_Script: {fileID: 11500000, guid: e8e58dce5964fff478de0e99c4696e30, type: 3}
m_Name:
m_EditorClassIdentifier:
selectedDeleteIndex: 0
cardDeck: 11270000122700001327000014270000
cardDeck: 112700001127000011270000
cardPrefab: {fileID: 6007039648128040781, guid: aca792d113461d44a8227dffd169496d,
type: 3}
cardFatherPanle: {fileID: 2114505808}
deletePanle: {fileID: 2102594624}
banDeleteCardIcon: {fileID: 931767495}
selectedSaleIndex: 0
saleCardList:
- {fileID: 6726700768224339748}
- {fileID: 559998871}
- {fileID: 1560066191}
- {fileID: 1147410003}
- {fileID: 1669132170}
- {fileID: 1446486241}
saleCardList: []
templatePlayerState: {fileID: 11400000, guid: afd7daa84e9985b45bd00c91505acb37,
type: 2}
playerState: {fileID: 0}

111
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs

@ -15,8 +15,10 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
// public Vector3 OriginTransform;
//private Vector3 EndTransform;
[Header("拖拽参数")]
public bool follow;
public Transform originalParent;
public Vector3 originalpoint;
public EventSystem eventSystem;
bool canUse = true;//决定卡牌是否可以释放
bool choosed;//标识卡牌是否被选中
@ -36,8 +38,13 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
[Header("射线图层剔除")]
public LayerMask layerMask;
[Header("鼠标检测脚本")]
public CardOnMouseEnter cardOnMouseEnter;
void Start()
{
cardOnMouseEnter = GetComponent<CardOnMouseEnter>();
eventSystem = GameObject.FindObjectOfType<EventSystem>();
cardEntity = GetComponent<CardEntity>();
}
@ -154,6 +161,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
//其他位置都归位
transform.SetParent(originalParent);
GetComponent<CanvasGroup>().blocksRaycasts = true;
transform.localScale = new Vector3(1f, 1f, 1f);
// transform.position = originalpoint;
// CardActiveSort.Instance.ReflashCardPoint();
return;
@ -170,10 +178,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
canUse = false;//取消释放
ainPanle.SetActive(false);
resetComponentPosition();
}
}
public void OnBeginDrag(PointerEventData eventData)
{
// if (GameObject.Find("CardPanel") != null)
@ -196,6 +203,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
transform.SetParent(transform.parent.parent);
transform.position = eventData.position;
GetComponent<RectTransform>().localScale = cardOnMouseEnter.targetScale;
//根据卡牌数据决定是否调用曲线
if (cardEntity.cardOriginalData.CastingRange != 0)
@ -365,6 +373,23 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
}
dyeing();
Debug.Log(eventData.pointerCurrentRaycast.gameObject.name);
if (eventData.pointerCurrentRaycast.gameObject.name == "TotalPanel")
{
follow = false;
}
else
{
follow = true;
}
if (follow == true )
{
transform.position = eventData.position;
}
else
{
transform.position = CardActiveSort .Instance .preparePoint .transform .position ;
}
}
private void dyeing()
@ -396,47 +421,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
{
if (eventData.pointerCurrentRaycast.gameObject != null)
{
if (eventData.pointerCurrentRaycast.gameObject.name == "Card")
{
transform.SetParent(eventData.pointerCurrentRaycast.gameObject.transform.parent);
transform.position = eventData.pointerCurrentRaycast.gameObject.transform.position;
eventData.pointerCurrentRaycast.gameObject.transform.position = originalParent.position;
eventData.pointerCurrentRaycast.gameObject.transform.SetParent(originalParent);
GetComponent<CanvasGroup>().blocksRaycasts = true;
//关闭贝塞尔曲线
ainPanle.SetActive(false);
//遍历范围预览池消除影响色
foreach (MapUnity mapUnity in GameManager.Instance.player.influencePreviewPool)
{
mapUnity.influenced = false;
}
//GameManager.Instance.player.influencePreviewPool.Clear();
yield break;
}
else if (eventData.pointerCurrentRaycast.gameObject.name == "cardSlot")
{
transform.SetParent(eventData.pointerCurrentRaycast.gameObject.transform);
transform.position = eventData.pointerCurrentRaycast.gameObject.transform.position;
GetComponent<CanvasGroup>().blocksRaycasts = true;
//关闭贝塞尔曲线
ainPanle.SetActive(false);
//遍历范围预览池消除影响色
foreach (MapUnity mapUnity in MapUnityManager.Instance.castPool)
{
mapUnity.influenced = false;
}
MapUnityManager.Instance.castPool.Clear();
foreach (MapUnity mapUnity in cardEntity.influencePreviewPool)
{
mapUnity.influenced = false;
}
cardEntity.influencePreviewPool.Clear();
//GameManager.Instance.player.influencePreviewPool.Clear();
yield break;
}
resetComponentPosition();
}
if (ainPanle.activeSelf)
{
@ -493,7 +478,47 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
/* if (eventData.pointerCurrentRaycast.gameObject.name == "Card")
{
transform.SetParent(eventData.pointerCurrentRaycast.gameObject.transform.parent);
transform.position = eventData.pointerCurrentRaycast.gameObject.transform.position;
eventData.pointerCurrentRaycast.gameObject.transform.position = originalParent.position;
eventData.pointerCurrentRaycast.gameObject.transform.SetParent(originalParent);
GetComponent<CanvasGroup>().blocksRaycasts = true;
//关闭贝塞尔曲线
ainPanle.SetActive(false);
//遍历范围预览池消除影响色
foreach (MapUnity mapUnity in GameManager.Instance.player.influencePreviewPool)
{
mapUnity.influenced = false;
}
//GameManager.Instance.player.influencePreviewPool.Clear();
yield break;
}
else if (eventData.pointerCurrentRaycast.gameObject.name == "cardSlot")
{
transform.SetParent(eventData.pointerCurrentRaycast.gameObject.transform);
transform.position = eventData.pointerCurrentRaycast.gameObject.transform.position;
GetComponent<CanvasGroup>().blocksRaycasts = true;
//关闭贝塞尔曲线
ainPanle.SetActive(false);
//遍历范围预览池消除影响色
foreach (MapUnity mapUnity in MapUnityManager.Instance.castPool)
{
mapUnity.influenced = false;
}
MapUnityManager.Instance.castPool.Clear();
foreach (MapUnity mapUnity in cardEntity.influencePreviewPool)
{
mapUnity.influenced = false;
}
cardEntity.influencePreviewPool.Clear();
//GameManager.Instance.player.influencePreviewPool.Clear();
yield break;
}*/

162
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOnMouseEnter.cs

@ -5,13 +5,173 @@ using UnityEngine.EventSystems;
public class CardOnMouseEnter : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
[Header("鼠标事件控制")]
public CardDrag cardDrag;
public Vector3 targetScale;
public Vector3 originScale;
public float speed =2;
private Coroutine coroutineBig;
private Coroutine coroutineSmall;
private Coroutine coroutineMoveSideway;
private Coroutine coroutineMoveComeback;
public float moveOffset =100;
// private Transform originParent;
public int thisIndexInIndex;
public Vector3 originPoint;
public Vector3 UpperOffset;
public Vector3 originRotation;
RectTransform rectTransform;
private void Start()
{
cardDrag = GetComponent<CardDrag>();
rectTransform = GetComponent<RectTransform>();
targetScale = new Vector3(1.3f, 1.3f, 1.3F);
originScale = transform.localScale;
// childIndex = transform.GetSiblingIndex();
}
public void OnPointerEnter(PointerEventData eventData)
{
Debug.Log("放大");
// if(coroutineSmall !=null )
// StopCoroutine(coroutineSmall);
if (GameManager.Instance.onDrag == false)
{
StopAllCoroutines();
transform.position = originPoint;
rectTransform.eulerAngles = new Vector3(0f, 0f, 0f);
coroutineBig = StartCoroutine(ZoomBig());
}
}
public void OnPointerExit(PointerEventData eventData)
{
// if(coroutineBig != null )
// StopCoroutine(coroutineBig);
if(GameManager .Instance . onDrag ==false )
{
StopAllCoroutines();
rectTransform.eulerAngles = originRotation;
coroutineSmall = StartCoroutine(ZoomSmall());
}
}
IEnumerator ZoomBig()
{
thisIndexInIndex = transform.GetSiblingIndex();
transform.position += UpperOffset;
OffsetOtherCard(thisIndexInIndex);
transform.SetAsLastSibling();
while (Vector3.Distance(transform.localScale, targetScale) > 0.1)
{
transform.transform.localScale = Vector3.Lerp(this.transform.localScale, targetScale, Time.deltaTime * speed);
yield return null;
}
}
IEnumerator ZoomSmall()
{
transform.SetSiblingIndex(thisIndexInIndex);
transform.position = originPoint ;
ComebackOtherCard(thisIndexInIndex);
while (Vector3.Distance(transform.localScale, originScale) > 0.1)
{
transform.transform.localScale = Vector3.Lerp(this.transform.localScale, originScale, Time.deltaTime * speed);
yield return null;
}
yield return 0;
}
public void OffsetOtherCard(int thisIndex)
{
List <CardEntity > cardEntities = TurnMaster.Instance.handCard.cardEntityList;
for(int i = 0;i<cardEntities .Count; i++)
{
int index = cardEntities[i].transform.GetSiblingIndex();
if(index != thisIndex )
{
cardEntities[i].GetComponent<CardOnMouseEnter>().StartMoveSideway(thisIndex);
}
}
}
public void ComebackOtherCard(int thisIndex)
{
List<CardEntity> cardEntities = TurnMaster.Instance.handCard.cardEntityList;
for (int i = 0; i < cardEntities.Count; i++)
{
int index = cardEntities[i].transform.GetSiblingIndex();
if (index != thisIndex)
{
cardEntities[i].GetComponent<CardOnMouseEnter>().StartComeBack();
}
}
}
public void StartMoveSideway(int chlidIndex)
{
if(originPoint.x != 0 )
{
//先归位
transform.position = originPoint;
}
//向侧面移动排开
int thisIndex = transform.GetSiblingIndex();
float thisOffset = moveOffset;
thisOffset = moveOffset / (thisIndex- chlidIndex );
Vector3 targetPos = originPoint + new Vector3(thisOffset, 0, 0);
if (coroutineMoveComeback != null)
{
StopCoroutine(coroutineMoveComeback);
}
coroutineMoveSideway = StartCoroutine(MoveSideway(targetPos));
}
public void StartComeBack()
{
if (coroutineMoveSideway != null)
StopCoroutine(coroutineMoveSideway);
coroutineMoveComeback= StartCoroutine(MoveComeBack());
}
IEnumerator MoveSideway(Vector3 targetPos)
{
while (Vector3.Distance(transform.position, targetPos) > 0.1)
{
transform.position = Vector3.Lerp(transform.position, targetPos, Time.deltaTime * speed);
yield return null;
}
}
IEnumerator MoveComeBack()
{
while (Vector3.Distance(transform.position, originPoint) > 0.1)
{
transform.position = Vector3.Lerp(transform.position, originPoint, Time.deltaTime * speed);
yield return null;
}
}
}

19
ColorlessWorld-2024-4-2/Assets/Scripts/UI/CardActiveSort/CardActiveSort.cs

@ -11,6 +11,8 @@ public class CardActiveSort : Singleton <CardActiveSort>
public float radius;//半径
public float angleIncrement;//起始角度增量
public GameObject preparePoint;
[Header ("卡牌位置")]
public List<CardPointData> cardPointDataList= new List<CardPointData>();//奇数
public List<CardPointData> cardPointDataListEven = new List<CardPointData>();//偶数
@ -33,7 +35,15 @@ public class CardActiveSort : Singleton <CardActiveSort>
for (int i = 0; i < transform.childCount; i++)
{
cardEntitieList.Add(transform.GetChild(i).GetComponent<RectTransform>());
}
//ÍŁÖšŇĆśŻ
foreach (var card in cardEntitieList )
{
CardOnMouseEnter cardOnMouseEnte = card.GetComponent<CardOnMouseEnter>();
cardOnMouseEnte.StopAllCoroutines();
}
Debug.Log("排序");
float currentangle = 0;
@ -57,6 +67,15 @@ public class CardActiveSort : Singleton <CardActiveSort>
cardEntitieList[i].transform.Rotate(0, 0, angle);
}
//ÖŘÖĂłőʟΝÖĂ
foreach (var card in cardEntitieList)
{
CardOnMouseEnter cardOnMouseEnte = card.GetComponent<CardOnMouseEnter>();
cardOnMouseEnte.originPoint= cardOnMouseEnte.transform.position ;
cardOnMouseEnte.originRotation = cardOnMouseEnte.GetComponent <RectTransform >().eulerAngles;
}
}
[System .Serializable ]

Loading…
Cancel
Save