Files
MinFt/Client/Assets/Scripts/DebugFunc.cs
Liubing\LB 3d8d4d18f3 first commit
先修复一下,错误的场景

删除不必要的钓场资产

修复into场景

update:更新meta文件,修复报错

update:修复资源

修复第一章节建造

修复建造第三章

update:删除多余内容

update:更新README.md

update:还原图标

update:更新README

update:更新配置
2026-04-28 02:17:22 +08:00

520 lines
18 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using asap.core;
using game;
using GameCore;
using IngameDebugConsole;
using System;
using System.Linq;
// using UI.HookWheel;
using UniRx;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
using UnityEngine.SceneManagement;
public class DebugFunc
{
public static void Init()
{
var config = GContext.container.Resolve<IConfig>();
if (config != null && (config.Get("DEBUG", "0") == "1" || config.Get("GM", "0") == "1"))
{
DebugLogConsole.AddCommand<string, string>("Go.show", "Shows a GameObject", ShowGO);
DebugLogConsole.AddCommand<string, string>("Go.hide", "Shows a GameObject", HideGO);
DebugLogConsole.AddCommand<int, string>("Render.quality", "change quality", SetQuality);
DebugLogConsole.AddCommand<float, string>("Render.scale", "Set render scale [0.1-2]", SetRendererScale);
DebugLogConsole.AddCommand<int, string>("Render.aa", "anti aliasing", SetAntiAliasing);
DebugLogConsole.AddCommand<string>("Render.ShadowToggle", "Toggle Shadow", ToggleShadow);
DebugLogConsole.AddCommand<string, string>("Render.Pipline", "light num", SetRenderPipline);
DebugLogConsole.AddCommand<string>("info.GPU", "GPU Info", GpuInfo);
DebugLogConsole.AddCommand<string>("info.CPU", "CPU Info", CpuInfo);
DebugLogConsole.AddCommand<string>("info.Support", "Device Support", SupportInfo);
DebugLogConsole.AddCommand("FPS", "Toggle FPS", Fps);
DebugLogConsole.AddCommand("LTPL", "开关 Leviathan Timeline 性能日志(不影响 FPS 浮层)", ToggleLeviathanTimelinePerf);
DebugLogConsole.AddCommand<int>("LTCW", "设置 CatchUp 消费等待(ms) 1~50", SetLeviathanCatchUpWaitMs);
DebugLogConsole.AddCommand("LTCW?", "查询 CatchUp 消费等待(ms)", GetLeviathanCatchUpWaitMs);
DebugLogConsole.AddCommand<int>("Render.antiAliasing", "change antiAliasing", SetRTAntiAliasing);
DebugLogConsole.AddCommand<string>("T.hotupdate", "hot update test", HotUpdateTest);
DebugLogConsole.AddCommand<string, string>("UI.hide", "Hide UI", ToggleUI);
DebugLogConsole.AddCommand<int, string>("Misc.tg", "Hide misc", ToggleMisc);
DebugLogConsole.AddCommand("aihelp", "open aihelp", OpenAIHelp);
DebugLogConsole.AddCommand("review", "open review", OpenReview);
DebugLogConsole.AddCommand("Pay.sku", "sku list", GetSKUs);
DebugLogConsole.AddCommand("ad.debug", "Active Ad Debug", ActiveAdDebug);
DebugLogConsole.AddCommand("ad.media", "Active Ad Media Debug", ActiveAdMedia);
DebugLogConsole.AddCommand("notify.send", "Local Notify Test", NotifyTest);
DebugLogConsole.AddCommand("notify.setting", " Notify set", NotifySettingTest);
DebugLogConsole.AddCommand<string>("notify.status", " Notify Status", NotificationStatus);
DebugLogConsole.AddCommand<string>("notify.time", "Notify at certain time", NotifyAtTime);
DebugLogConsole.AddCommand("mail.status", "Print cache mail", PrintMail);
DebugLogConsole.AddCommand("mail.fetch", "fetch mail to cache", FetchMail);
DebugLogConsole.AddCommand("rt.test", "test realtime", RtTest);
DebugLogConsole.AddCommand<int>("event.start", "Start event game by code (12=bottle)", EventStart);
DebugLogConsole.AddCommand<int>("account.loginTime", "login time - 1day", LoginTime);
DebugLogConsole.AddCommand("account.info", "account info", AccoutInfo);
// [REMOVED] CustomServerMgr deleted: AuthorTest
DebugLogConsole.AddCommand("open.washing", "Open Washing Activity", OpenWashingActivity);
DebugLogConsole.AddCommand("deeplink.test", "Test if deeplink connects. If so, returns pid and uid.", TestDeepLink);
DebugLogConsole.AddCommand("srp.fswave", "toggle fullscreen wave", ToggleFSWave);
DebugLogConsole.AddCommand("srp.fsblur", "toggle fullscreen blur", ToggleFSBlur);
DebugLogConsole.AddCommand("guide.clear", "clear guide data", ClearGuide);
DebugLogConsole.AddCommand("lastpayment.clear", "Clear Last Payment Time", ClearLastPaymentTime);
}
}
private static void TestDeepLink()
{
Debug.Log("TestDeepLink: AppsFlyer removed in demo build");
}
private static void NotifyAtTime(string time)
{
var now = ZZTimeHelper.UtcNow();
var fireTime = DateTime.SpecifyKind(DateTime.Parse(time), DateTimeKind.Utc);
fireTime = fireTime.AddDays(now <= fireTime ? 0 : 1);
var service = GContext.container.Resolve<ILocalNotificationService>();
service.ScheduleOneTimeNotification(434200, fireTime.ToLocalTime(), "Test Note at Time",
$"Test Notification @ {fireTime}.");
}
private static void NotifyTest()
{
ILocalNotificationService service = GContext.container.Resolve<ILocalNotificationService>();
service.ScheduleOneTimeNotification(434200, DateTime.Now + TimeSpan.FromSeconds(3), "Notification",
"Test Notification ");
}
private static void NotifySettingTest()
{
ILocalNotificationService service = GContext.container.Resolve<ILocalNotificationService>();
service.OpenSettings();
}
private static string NotificationStatus()
{
#if UNITY_ANDROID
return Unity.Notifications.Android.AndroidNotificationCenter.UserPermissionToPost.ToString();
#else
return Unity.Notifications.iOS.iOSNotificationCenter.GetNotificationSettings().AuthorizationStatus.ToString();
#endif
}
private static string HotUpdateTest()
{
return "hot update test Ver 0.6 - 2024-03-26:1434";
}
private static string ToggleUI(string path)
{
GameObject homePanelGo = UIManager.Instance.gameObject.transform.Find("HomePanel").gameObject;
if (homePanelGo == null)
{
return "UI not found.";
}
GameObject go = homePanelGo.transform.Find(path).gameObject;
if (go == null)
{
return "path not found";
}
go.SetActive(!go.activeSelf);
return $"UI {go} toggled to {go.activeSelf}.";
}
private static string ToggleMisc(int idx)
{
GameObject go = GetGOFromPath("Env_101(Clone)/Misc");
int childCount = go.transform.childCount;
if (idx >= childCount)
return $"index {idx} exceeds children count{childCount}";
var child = go.transform.GetChild(idx).gameObject;
if (child == null)
return $"child {idx} not found";
child.SetActive(!child.activeSelf);
return $"{child} toggled to {child.activeSelf}.";
}
private static void OpenAIHelp()
{
// AIHelp.AIHelpSupport.Show("E001");
}
private static void OpenReview()
{
var config = GContext.container.Resolve<IConfig>();
// tysdk.AppRequestReview.RequestReview(config.Get(GConstant.K_APP_Store_URL, string.Empty));
}
private static string ShowGO(string path)
{
GameObject go = GetGOFromPath(path);
if (go != null)
{
go.SetActive(true);
}
return $"GameObject not found";
}
private static string HideGO(string path)
{
GameObject go = GetGOFromPath(path);
if (go != null)
{
go.SetActive(false);
return $"{go.name} has been hidden";
}
return $"GameObject not found";
}
private static string SetQuality(int level)
{
QualityManager.ChangeQuality(level);
zzwater.URPHelper.RendererFeatureSetActive(false, "FSBlur");
zzwater.URPHelper.RendererFeatureSetActive(false, "FSWave");
return $"quality set to {QualitySettings.names[QualitySettings.GetQualityLevel()]}";
}
private static void SetRTAntiAliasing(int level)
{
var rt = new RenderTexture((int)125, (int)125, 24, RenderTextureFormat.ARGB32);
rt.antiAliasing = level;
}
private static string SetRendererScale(float ratio)
{
if (ratio == 0)
{
return $"Render scale {CurrentRenderPipeline.renderScale}";
}
ratio = Mathf.Clamp(ratio, 0.1f, 2f);
var uprAsset = CurrentRenderPipeline;
if (uprAsset == null) return "No UniversalRenderPipelineAsset";
var preValue = uprAsset.renderScale;
uprAsset.renderScale = ratio;
return $"Render scale {preValue} set to {ratio}";
}
private static string SetAntiAliasing(int count)
{
var uprAsset = CurrentRenderPipeline;
if (uprAsset == null) return "No UniversalRenderPipelineAsset";
var preValue = uprAsset.msaaSampleCount;
uprAsset.msaaSampleCount = count;
return $"Render scale {preValue} set to {count}";
}
private static string SetRenderPipline(string name)
{
var currentPiplineName = GraphicsSettings.currentRenderPipeline.name;
if (name == "?")
{
return $"Pipline set to {currentPiplineName}";
}
else if (name == "-")
{
QualitySettings.renderPipeline = null;
}
else
{
var pipelineAsset = Addressables.LoadAssetAsync<RenderPipelineAsset>(name).WaitForCompletion();
QualitySettings.renderPipeline = pipelineAsset;
}
var newPipelineName = GraphicsSettings.currentRenderPipeline.name;
return $"{currentPiplineName} set to {newPipelineName}";
}
private static string ToggleShadow()
{
var cam = Camera.main;
if (cam != null)
{
var comp = cam.GetComponent<UniversalAdditionalCameraData>();
var preValue = comp.renderShadows;
comp.renderShadows = !preValue;
return $"Shadow {preValue} set to {comp.renderShadows}";
}
return "Camera not found";
}
private static string CpuInfo()
{
var props = typeof(SystemInfo).GetProperties()
.Where(x => x.Name.StartsWith("processor"));
var sb = new System.Text.StringBuilder();
sb.AppendLine();
foreach (var prop in props)
{
sb.AppendLine($"{prop.Name}: {prop.GetValue(null)}");
}
return sb.ToString();
}
private static string GpuInfo()
{
var props = typeof(SystemInfo).GetProperties()
.Where(x => x.Name.StartsWith("graphics"));
var sb = new System.Text.StringBuilder();
sb.AppendLine();
foreach (var prop in props)
{
sb.AppendLine($"{prop.Name}: {prop.GetValue(null)}");
}
return sb.ToString();
}
private static string SupportInfo()
{
var props = typeof(SystemInfo).GetProperties()
.Where(x => x.Name.StartsWith("support"));
var sb = new System.Text.StringBuilder();
sb.AppendLine();
foreach (var prop in props)
{
sb.AppendLine($"{prop.Name}: {prop.GetValue(null)}");
}
return sb.ToString();
}
private static void Fps()
{
game.RootCtx.showFPS = !game.RootCtx.showFPS;
}
private static void ToggleLeviathanTimelinePerf()
{
// var on = !LeviathanLogConfig.EnableTimelineVideoPerfLog;
// LeviathanLogConfig.EnableTimelineVideoPerfLog = on;
// PlayerPrefs.SetInt("LeviathanTimelinePerf", on ? 1 : 0);
// PlayerPrefs.Save();
// UnityEngine.Debug.Log($"[Debug] Leviathan Timeline 性能日志 = {on}Logcat 搜 LeviathanTimelineVideoPerf");
}
private static void SetLeviathanCatchUpWaitMs(int ms)
{
// var decoders = UnityEngine.Object.FindObjectsOfType<UnityEngine.MonoBehaviour // UnityEngine.MonoBehaviour // LeviathanVideoDecoderBase>(true);
// if (decoders == null || decoders.Length == 0)
// {
// UnityEngine.Debug.Log("[Debug] LTCW: 未找到活跃的 UnityEngine.MonoBehaviour // UnityEngine.MonoBehaviour // LeviathanVideoDecoderBase 实例");
// return;
// }
// foreach (var d in decoders)
// {
// d.CatchUpConsumePerFrameWaitMs = ms;
// }
// UnityEngine.Debug.Log($"[Debug] LTCW: 已将 {decoders.Length} 个解码器 CatchUpConsumePerFrameWaitMs 设为 {ms}ms");
}
private static void GetLeviathanCatchUpWaitMs()
{
// var decoders = UnityEngine.Object.FindObjectsOfType<UnityEngine.MonoBehaviour // UnityEngine.MonoBehaviour // LeviathanVideoDecoderBase>();
// if (decoders == null || decoders.Length == 0)
// {
// UnityEngine.Debug.Log("[Debug] LTCW?: 未找到活跃的 UnityEngine.MonoBehaviour // UnityEngine.MonoBehaviour // LeviathanVideoDecoderBase 实例");
// return;
// }
// foreach (var d in decoders)
// {
// UnityEngine.Debug.Log($"[Debug] LTCW? {d.name}: CatchUpConsumePerFrameWaitMs={d.CatchUpConsumePerFrameWaitMs}ms");
// }
}
private static UniversalRenderPipelineAsset CurrentRenderPipeline
{
get
{
return GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset;
//return (UniversalRenderPipelineAsset) QualitySettings.renderPipeline;
}
}
private static async void GetSKUs()
{
var iapService = GContext.container.Resolve<game.IIAPService>();
if (iapService == null)
{
UnityEngine.Debug.Log("iapService is null");
;
return;
}
var sb = new System.Text.StringBuilder();
sb.AppendLine();
var skus = await iapService.GetSKUs();
foreach (var sku in skus)
{
sb.AppendLine();
sb.Append($" {sku.price} code {sku.price_currency_code} ");
sb.AppendLine();
}
UnityEngine.Debug.Log(sb.ToString());
}
private static void ActiveAdDebug()
{
// removed: MaxSdk deleted
}
private static void ActiveAdMedia()
{
// removed: MaxSdk deleted
}
private static GameObject GetGOFromPath(string path)
{
var root = SceneManager.GetActiveScene().GetRootGameObjects();
var splitPath = path.Split('/');
var rootName = splitPath[0];
var rootGo = root.FirstOrDefault(x => x.name == rootName);
if (rootGo == null) return null;
if (splitPath.Length == 1) return rootGo;
var childPath = string.Join("/", splitPath.Skip(1));
return rootGo.transform.Find(childPath)?.gameObject;
}
private static void PrintMail()
{
var mailService = GContext.container.Resolve<IInGameMailService>() as InGameMailService;
mailService.PrintCacheMail();
}
private static void FetchMail()
{
GContext.container.Resolve<IInGameMailService>().FetchMail();
}
private static void RtTest()
{
var rtService = GContext.container.Resolve<IRTService>() as SignalRService;
rtService.Test();
}
private static async void EventStart(int code)
{
var panel = await UIManager.Instance.GetUIAsync(UITypes.EventGamePlayPanel);
panel.GetComponent<EventGamePlayPanel>().StartGame(code);
}
private static void LoginTime(int hours)
{
var userService = GContext.container.Resolve<game.IUserService>() as game.PlayFabUserService;
if (userService == null) return;
var loginTime = userService.LoginTime;
var newLoginTime = loginTime.AddHours(hours);
var prop = userService.GetType().GetProperty("LoginTime");
prop.SetValue(userService, newLoginTime);
Debug.Log($"loginTime: {loginTime} newLoginTime: {newLoginTime} prop: {userService.LoginTime}");
}
private static void AccoutInfo()
{
var userService = GContext.container.Resolve<game.IUserService>() as game.PlayFabUserService;
if (userService == null) return;
Debug.Log($"pfid: {userService.UserId} tyid: {userService.CustomId} lastLogin: {userService.LoginTime}");
if (PlayerPrefs.HasKey("KEY_ACCOUNT_INFO"))
{
Debug.Log("Saved account info: " + PlayerPrefs.GetString("KEY_ACCOUNT_INFO"));
}
else
{
Debug.Log("No saved account info");
}
}
// [REMOVED] CustomServerMgr deleted
// private static async void AuthorTest()
// {
// var svr = GContext.container.Resolve<ICustomServerMgr>();
// var result = await svr.GetStringAsync("account/authortest");
// Debug.Log($"AuthorTest {result}");
// }
private static void AIHelpTest()
{
RedPointManager.Instance.SetRedPointState(RedPointName.AIHelp_Msg, true, 1);
}
private static void OpenWashingActivity()
{
ToggleUI("safearea/RightPanel/layout/btn_washing");
}
private static void EventPartnerDebugActivate()
{
// var d = GContext.container.Resolve<EventPartnerData>();
// if (d is null)
// {
// Debug.Log( $"<color=#2d7cee>[EventPartner] No data found, cannot activate.</color>");
// return;
// }
// _ = d.LoadDataDebug();
Debug.Log($"<color=#2d7cee>[EventPartner] This function is obsoleted for now.</color>");
}
private static void ToggleFSWave()
{
var feature = zzwater.URPHelper.FindAndCacheRendererFeature("FSWave");
if (feature == null)
Debug.LogError($"Feature FSWave not found");
else
feature.SetActive(!feature.isActive);
}
private static void ToggleFSBlur()
{
var feature = zzwater.URPHelper.FindAndCacheRendererFeature("FSBlur");
if (feature == null)
Debug.LogError($"Feature FSWave not found");
else
feature.SetActive(!feature.isActive);
}
static void ClearGuide()
{
GContext.container.Resolve<GuideDataCenter>().GMClearGuide();
UIManager.Instance.DestroyUI(UITypes.GuidancePanel);
}
static void ClearLastPaymentTime()
{
PlayFabMgr.Instance.UpdateUserDataValue("LastPaymentTime", "");
}
}