330 lines
9.6 KiB
C#
330 lines
9.6 KiB
C#
using cfg.ActorCfg;
|
||
using Code.Scripts.Gameplay.Game;
|
||
using Cysharp.Threading.Tasks;
|
||
using Framework;
|
||
using Gameplay;
|
||
using Gameplay.Character;
|
||
using Gameplay.Net;
|
||
using Gameplay.Unit;
|
||
using Gameplay.Unit.Data;
|
||
using System.ComponentModel;
|
||
using System.Drawing.Text;
|
||
using Gameplay.Common;
|
||
using UnityEngine;
|
||
using YooAsset;
|
||
|
||
public partial class SROptions
|
||
{
|
||
//[Category("GM"), DisplayName("机器人数据初始化")] 25/2/20 关闭DEBUGGER功能
|
||
//public void SendRobotTestInit()
|
||
//{
|
||
// if (UnityEngine.Application.isPlaying)
|
||
// {
|
||
// Gameplay.Net.NetHelper.RobotTestInit();
|
||
// }
|
||
//}
|
||
|
||
//[Category("GM"), DisplayName("测试剧情ID")] 25/2/20 关闭DEBUGGER功能
|
||
//public string testStoryId
|
||
//{
|
||
// get;
|
||
// set;
|
||
//} = "0_1_1";
|
||
//
|
||
//[Category("GM"), DisplayName("进入测试剧情")] 25/2/20 关闭DEBUGGER功能
|
||
//public void EnterStory()
|
||
//{
|
||
// GameStateManager.Instance.ChangeState(new GameStateStory(testStoryId));
|
||
//}
|
||
|
||
|
||
private string gc;
|
||
|
||
//[Category("礼包兑换")] 25/2/20 关闭DEBUGGER功能
|
||
//public string GiftCode
|
||
//{
|
||
// get { return gc; }
|
||
// set { gc = value; }
|
||
//}
|
||
|
||
//[Category("礼包兑换")] 25/2/20 关闭DEBUGGER功能
|
||
//public void DoGiftCode()
|
||
//{
|
||
// if (UnityEngine.Application.isPlaying)
|
||
// {
|
||
// Gameplay.Net.NetHelper.GiftCode(GiftCode);
|
||
// }
|
||
//}
|
||
|
||
|
||
private int _itemId;
|
||
|
||
//[Category("GM增加物品"), DisplayName("物品ID")] 25/2/20 关闭DEBUGGER功能
|
||
//public int ItemId
|
||
//{
|
||
// get { return _itemId; }
|
||
// set
|
||
// {
|
||
// if (_itemId.Equals(value)) return;
|
||
// SetItemId(value);
|
||
// _itemId = value;
|
||
// }
|
||
//}
|
||
|
||
private void SetItemId(int id)
|
||
{
|
||
DataItem dataItem = TableManager.Instance.Tables.Item.Get(id);
|
||
if (dataItem == null)
|
||
{
|
||
SRDebug.Instance.ShowBugReportSheet(descriptionContent: "此ID不在item表里,查一下是不是填错了");
|
||
return;
|
||
}
|
||
|
||
_itemId = id;
|
||
}
|
||
|
||
private int _itemsCount = 1;
|
||
|
||
//[Category("GM增加物品"), DisplayName("物品个数")] 25/2/20 关闭DEBUGGER功能
|
||
//public int ItemsCount
|
||
//{
|
||
// get { return _itemsCount; }
|
||
// set
|
||
// {
|
||
// if (_itemsCount.Equals(value)) return;
|
||
// _itemsCount = value;
|
||
// }
|
||
//}
|
||
private string GMToken = "phxh666";
|
||
|
||
//[Category("GM增加物品"), DisplayName("增加指定物品")] 25/2/20 关闭DEBUGGER功能
|
||
//public async void AddItem()
|
||
//{
|
||
// if(_itemsCount==0)
|
||
// {
|
||
// return;
|
||
// }
|
||
//
|
||
//
|
||
// string url = GetURL(GMToken, GetIp(), Actor.Instance.Base.GetProp(NLDPB.ActorProp.ActorId).ToString());
|
||
// var request = UnityEngine.Networking.UnityWebRequest.Get(url);
|
||
// await request.SendWebRequest();
|
||
// //DebugUtil.LogError("gm新错" + request.downloadHandler.text);
|
||
//
|
||
//
|
||
//}
|
||
|
||
[Category("IAP内购"), DisplayName("客户端验证")]
|
||
public bool ClientVerify
|
||
{
|
||
get { return IAPManager.Instance.ClientVerify; }
|
||
set { IAPManager.Instance.ClientVerify = value; }
|
||
}
|
||
|
||
[Category("IAP内购"), DisplayName("初始化IAP")]
|
||
public void InitIAP()
|
||
{
|
||
IAPManager.Instance.ReLoad();
|
||
}
|
||
|
||
[Category("IAP内购"), DisplayName("完成所有交易")]
|
||
public void ConfirmPending()
|
||
{
|
||
IAPManager.Instance.ConfirmPending();
|
||
}
|
||
|
||
[Category("IAP内购"), DisplayName("跳过真实支付")]
|
||
public bool SkipRealPay
|
||
{
|
||
get => IAPManager.Instance.SkipRealPay;
|
||
set => IAPManager.Instance.SkipRealPay = value;
|
||
}
|
||
|
||
[Category("用户数据"), DisplayName("删除本地缓存数据")]
|
||
public void DeleteData()
|
||
{
|
||
StorageMgr.Instance.DeleteSaveData();
|
||
CrossDayChecker.Instance.DeleteSaveData = true;
|
||
}
|
||
|
||
private string GetURL(string token, string ip, string actor)
|
||
{
|
||
string param = "";
|
||
|
||
if (_itemId <= 0 || _itemsCount <= 0)
|
||
return null;
|
||
param = $"{_itemId},{_itemsCount}";
|
||
|
||
return $"http://{ip}/gm?actor_id={actor}&command=AddItem&gm_token={token}¶m={param}";
|
||
}
|
||
|
||
|
||
private string GetIp()
|
||
{
|
||
var serverInfo = AppConfig.Instance.GetCurrent();
|
||
return serverInfo.addrs[0].ip + ":8080";
|
||
}
|
||
|
||
// 从所有加载的场景中查找节点
|
||
private GameObject[] FindGameObjectsInAllScenes(string name)
|
||
{
|
||
int sceneCount = UnityEngine.SceneManagement.SceneManager.sceneCount;
|
||
System.Collections.Generic.List<GameObject> foundObjects = new System.Collections.Generic.List<GameObject>();
|
||
|
||
for (int i = 0; i < sceneCount; i++)
|
||
{
|
||
var scene = UnityEngine.SceneManagement.SceneManager.GetSceneAt(i);
|
||
if (scene.isLoaded)
|
||
{
|
||
Debug.Log($"在场景 {scene.name} 中查找 {name}");
|
||
|
||
// 获取场景中的所有根游戏对象
|
||
var rootObjects = scene.GetRootGameObjects();
|
||
foreach (var rootObject in rootObjects)
|
||
{
|
||
// 搜索根对象
|
||
if (rootObject.name == name)
|
||
{
|
||
foundObjects.Add(rootObject);
|
||
Debug.Log($"在场景 {scene.name} 的根节点中找到 {name}");
|
||
}
|
||
|
||
// 搜索子对象
|
||
var childObjects = rootObject.GetComponentsInChildren<Transform>(true);
|
||
foreach (var child in childObjects)
|
||
{
|
||
if (child.gameObject.name == name)
|
||
{
|
||
foundObjects.Add(child.gameObject);
|
||
Debug.Log($"在场景 {scene.name} 的节点 {rootObject.name} 下找到 {name}");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return foundObjects.ToArray();
|
||
}
|
||
|
||
[Category("场景节点")]
|
||
[Sort(1)]
|
||
[DisplayName("启用Art节点(禁用Art_Old)")]
|
||
public void EnableArtDisableArtOld()
|
||
{
|
||
Debug.Log("正在查找和切换Art节点...");
|
||
var artNodes = FindGameObjectsInAllScenes("Art");
|
||
var artOldNodes = FindGameObjectsInAllScenes("Art_Old");
|
||
|
||
if (artNodes.Length == 0)
|
||
{
|
||
Debug.LogError("在所有场景中找不到Art节点!");
|
||
return;
|
||
}
|
||
|
||
if (artOldNodes.Length == 0)
|
||
{
|
||
Debug.LogError("在所有场景中找不到Art_Old节点!");
|
||
return;
|
||
}
|
||
|
||
foreach (var artNode in artNodes)
|
||
{
|
||
artNode.SetActive(true);
|
||
Debug.Log($"已启用Art节点: {GetGameObjectPath(artNode)}");
|
||
}
|
||
|
||
foreach (var artOldNode in artOldNodes)
|
||
{
|
||
artOldNode.SetActive(false);
|
||
Debug.Log($"已禁用Art_Old节点: {GetGameObjectPath(artOldNode)}");
|
||
}
|
||
|
||
Debug.Log($"总共处理 {artNodes.Length} 个Art节点和 {artOldNodes.Length} 个Art_Old节点");
|
||
}
|
||
|
||
[Category("场景节点")]
|
||
[Sort(2)]
|
||
[DisplayName("启用Art_Old节点(禁用Art)")]
|
||
public void EnableArtOldDisableArt()
|
||
{
|
||
Debug.Log("正在查找和切换Art_Old节点...");
|
||
var artNodes = FindGameObjectsInAllScenes("Art");
|
||
var artOldNodes = FindGameObjectsInAllScenes("Art_Old");
|
||
|
||
if (artNodes.Length == 0)
|
||
{
|
||
Debug.LogError("在所有场景中找不到Art节点!");
|
||
return;
|
||
}
|
||
|
||
if (artOldNodes.Length == 0)
|
||
{
|
||
Debug.LogError("在所有场景中找不到Art_Old节点!");
|
||
return;
|
||
}
|
||
|
||
foreach (var artNode in artNodes)
|
||
{
|
||
artNode.SetActive(false);
|
||
Debug.Log($"已禁用Art节点: {GetGameObjectPath(artNode)}");
|
||
}
|
||
|
||
foreach (var artOldNode in artOldNodes)
|
||
{
|
||
artOldNode.SetActive(true);
|
||
Debug.Log($"已启用Art_Old节点: {GetGameObjectPath(artOldNode)}");
|
||
}
|
||
|
||
Debug.Log($"总共处理 {artNodes.Length} 个Art节点和 {artOldNodes.Length} 个Art_Old节点");
|
||
}
|
||
|
||
[Category("场景节点")]
|
||
[Sort(3)]
|
||
[DisplayName("获取Art节点状态")]
|
||
public void CheckArtNodesStatus()
|
||
{
|
||
var artNodes = FindGameObjectsInAllScenes("Art");
|
||
var artOldNodes = FindGameObjectsInAllScenes("Art_Old");
|
||
|
||
Debug.Log($"找到 {artNodes.Length} 个Art节点和 {artOldNodes.Length} 个Art_Old节点");
|
||
|
||
foreach (var artNode in artNodes)
|
||
{
|
||
Debug.Log($"Art节点状态: {(artNode.activeSelf ? "启用" : "禁用")}, 路径: {GetGameObjectPath(artNode)}");
|
||
}
|
||
|
||
foreach (var artOldNode in artOldNodes)
|
||
{
|
||
Debug.Log($"Art_Old节点状态: {(artOldNode.activeSelf ? "启用" : "禁用")}, 路径: {GetGameObjectPath(artOldNode)}");
|
||
}
|
||
|
||
if (artNodes.Length == 0)
|
||
{
|
||
Debug.LogWarning("在所有场景中都不存在Art节点");
|
||
}
|
||
|
||
if (artOldNodes.Length == 0)
|
||
{
|
||
Debug.LogWarning("在所有场景中都不存在Art_Old节点");
|
||
}
|
||
}
|
||
|
||
// 获取游戏对象的完整路径
|
||
private string GetGameObjectPath(GameObject obj)
|
||
{
|
||
string path = obj.name;
|
||
Transform parent = obj.transform.parent;
|
||
|
||
while (parent != null)
|
||
{
|
||
path = parent.name + "/" + path;
|
||
parent = parent.parent;
|
||
}
|
||
|
||
// 添加场景名称
|
||
var sceneName = obj.scene.name;
|
||
path = sceneName + ":" + path;
|
||
|
||
return path;
|
||
}
|
||
} |