195 lines
5.9 KiB
C#
195 lines
5.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Cysharp.Threading.Tasks;
|
|
using Game.Pathfinding;
|
|
using JetBrains.Annotations;
|
|
using Sirenix.OdinInspector;
|
|
using Spine.Unity;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
namespace Game
|
|
{
|
|
public class Test : MonoBehaviour
|
|
{
|
|
// public Transform tr;
|
|
|
|
private void Awake()
|
|
{
|
|
// UniTask.Create(this.TTT);
|
|
}
|
|
|
|
// async UniTask TTT()
|
|
// {
|
|
// List<UniTask> uniTasks = new List<UniTask>();
|
|
//
|
|
// uniTasks.Add(this.TT1());
|
|
// uniTasks.Add(this.TT2());
|
|
//
|
|
// await UniTask.WhenAll(uniTasks);
|
|
// Debug.Log("TTT finish");
|
|
// }
|
|
//
|
|
// bool istrue1 = false;
|
|
//
|
|
// async UniTask TT1()
|
|
// {
|
|
// this.istrue1 = true;
|
|
// while (istrue1)
|
|
// {
|
|
// Debug.Log("等待1 ing");
|
|
// await UniTask.Yield();
|
|
// }
|
|
//
|
|
// Debug.Log("等待1 finish");
|
|
// }
|
|
//
|
|
// bool istrue2 = false;
|
|
//
|
|
// async UniTask TT2()
|
|
// {
|
|
// this.istrue2 = true;
|
|
// while (istrue2)
|
|
// {
|
|
// Debug.Log("等待2 ing");
|
|
// await UniTask.Yield();
|
|
// }
|
|
//
|
|
// Debug.Log("等待2 finish");
|
|
// }
|
|
// public SkeletonAnimation _skeletonAnimation;
|
|
private void Update()
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.A))
|
|
{
|
|
// var go = Game.resourceManager.LoadGameObjectSync(@"player");
|
|
// // var go = ResourceManager.Instance.LoadGameObject_MMM(@"hh");
|
|
// go.name = "123";
|
|
|
|
// this.istrue1 = false;
|
|
|
|
// _skeletonAnimation.AnimationName = "atk";
|
|
}
|
|
|
|
if (Input.GetKeyDown(KeyCode.D))
|
|
{
|
|
// this.istrue2 = false;
|
|
|
|
// _skeletonAnimation.AnimationName = "idle";
|
|
|
|
//
|
|
// ResourceManager.Instance.Release("hh");
|
|
|
|
//
|
|
// CommonHelper.FindChildDeep<Image>(tr, "imag");
|
|
// Debug.Log("找到此组件l");
|
|
|
|
//
|
|
// ResourceManager.Instance.LoadSceneAsync("Game", LoadSceneMode.Additive);
|
|
|
|
//
|
|
// EventManager.Instance.FireNow(this, new LoadingGameSceneFinishEventArgs(true));
|
|
|
|
//
|
|
//var value = this.GetType().ToString().Split(".");
|
|
// Debug.Log(value[^1]);
|
|
|
|
//
|
|
// var values = Enum.GetValues(typeof(ProcedureType));
|
|
// foreach (var value in values)
|
|
// {
|
|
// UnityEngine.Debug.Log( value.ToString());
|
|
// }
|
|
|
|
// this.AAA(this.startTr.position, this.endTr.position);
|
|
|
|
ShuffleAndRemoveRooms(new List<string>() { "1", "2", "3", "4", " 5", "6", " 7", "8", "9" });
|
|
}
|
|
|
|
// RaycastHit2D hit = Physics2D.Raycast(Input.mousePosition, Vector2.up);
|
|
//
|
|
// // If it hits something...
|
|
// if (hit.collider != null)
|
|
// {
|
|
// Debug.Log($"碰撞的是 {hit.collider.name} 鼠标的点在 {hit.point}");
|
|
// }
|
|
//
|
|
// Debug.Log(hit.point);
|
|
}
|
|
|
|
public void ShuffleAndRemoveRooms(List<string> list)
|
|
{
|
|
// 使用Fisher-Yates洗牌算法随机打乱allRooms列表
|
|
ShuffleList(list);
|
|
|
|
// 随机决定要移除的房间数量,保证至少移除一个房间,最多移除总数减一
|
|
int removeCount = UnityEngine.Random.Range(1, list.Count);
|
|
|
|
// 移除指定数量的房间(从列表末尾移除)
|
|
for (int i = 0; i < removeCount; i++)
|
|
{
|
|
list.RemoveAt(list.Count - 1);
|
|
}
|
|
|
|
foreach (var i in list)
|
|
{
|
|
Debug.Log(i);
|
|
}
|
|
}
|
|
|
|
// 实现Fisher-Yates洗牌算法
|
|
private void ShuffleList<T>(List<T> list)
|
|
{
|
|
for (int i = list.Count - 1; i > 0; i--)
|
|
{
|
|
int swapIndex = UnityEngine.Random.Range(0, i + 1);
|
|
(list[i], list[swapIndex]) = (list[swapIndex], list[i]);
|
|
}
|
|
}
|
|
|
|
|
|
public Transform startTr;
|
|
public Transform endTr;
|
|
|
|
void AAA(Vector2 start, Vector2 end)
|
|
{
|
|
var gameGlobalConfig = GameObject.FindObjectOfType<GameGlobalConfig>();
|
|
BFS<WayPoint> bfs = new BFS<WayPoint>(CreateGraph(gameGlobalConfig));
|
|
var beginNode = GetNode(bfs, start);
|
|
var endNode = GetNode(bfs, end);
|
|
Debug.Log($"start is {beginNode.index}, end is {endNode.index}");
|
|
// var findPath = bfs.FindPath(beginNode, endNode);
|
|
// var wayPoints = new List<WayPoint>();
|
|
// findPath.GetDatas(wayPoints);
|
|
// Debug.Log($"Indices:{string.Join(',', findPath.GetNodes().Select(x => x.index))}");
|
|
// Debug.Log($"Positions:{string.Join(',', findPath.GetNodes().Select(x => x.data.position))}");
|
|
}
|
|
|
|
[CanBeNull]
|
|
private static Node<WayPoint> GetNode(BFS<WayPoint> bfs, Vector2 position)
|
|
{
|
|
float distance = float.MaxValue;
|
|
Node<WayPoint> targetStartNode = null;
|
|
bfs.GetNode(node =>
|
|
{
|
|
var magnitude = ((Vector2)node.data.position - position).magnitude;
|
|
if (magnitude < distance)
|
|
{
|
|
distance = magnitude;
|
|
targetStartNode = node;
|
|
}
|
|
|
|
return false;
|
|
});
|
|
return targetStartNode;
|
|
}
|
|
|
|
private Graph<WayPoint> CreateGraph(GameGlobalConfig gameGlobalConfig)
|
|
{
|
|
var graph = new WayPointGraph();
|
|
graph.Initialize(gameGlobalConfig.nodeMaps);
|
|
return graph;
|
|
}
|
|
}
|
|
} |