添加debug工具

This commit is contained in:
2024-09-03 19:56:21 +08:00
parent 187407cedb
commit aa4595f290
554 changed files with 59600 additions and 9992 deletions
.gitignore
Assets
CSAssets
Editor
Plugins
IngameDebugConsole.meta
IngameDebugConsole
Android.meta
Android
Editor.meta
Editor
IngameDebugConsole.Runtime.asmdefIngameDebugConsole.Runtime.asmdef.metaIngameDebugConsole.prefabIngameDebugConsole.prefab.metaPrefabs.meta
Prefabs
README.txtREADME.txt.metaScripts.meta
Scripts
Sprites.meta
Sprites
WebGL.meta
WebGL
iOS.meta
iOS
RuntimeInspector.meta
RuntimeInspector
ExternalResources.meta
ExternalResources
InternalSettings.assetInternalSettings.asset.metaPrefabs.meta
Prefabs
README.txtREADME.txt.metaResources.meta
Resources
RuntimeHierarchy.prefabRuntimeHierarchy.prefab.metaRuntimeInspector.Runtime.asmdefRuntimeInspector.Runtime.asmdef.metaRuntimeInspector.prefabRuntimeInspector.prefab.metaScripts.meta
Scripts
RuntimeHierarchy.csRuntimeHierarchy.cs.metaRuntimeHierarchy.meta
RuntimeHierarchy
RuntimeInspector.csRuntimeInspector.cs.metaRuntimeInspector.meta
RuntimeInspector
Attributes.meta
Attributes
Fields.meta
Fields
Helpers.meta
Helpers
Skin.meta
Skin
Shaders.meta
Shaders
Skins.meta
Skins
Sprites.meta
Sprites
ThirdPartyNotices.txtThirdPartyNotices.txt.meta
Project
GameRes
DummyMaterial
1005278527.mat.meta1027421493.mat.meta1029769654.mat.meta103973718.mat.meta1098675164.mat.meta1105669650.mat.meta1129907047.mat.meta1183509003.mat.meta1184956560.mat.meta1192151891.mat.meta1209964436.mat.meta1248213280.mat.meta1274362148.mat.meta1288468513.mat.meta1296894701.mat.meta130217613.mat.meta1381407051.mat.meta1423995325.mat.meta1456853423.mat.meta1459214389.mat.meta1500675633.mat.meta1503927734.mat.meta1511286178.mat.meta1519698979.mat.meta1521666193.mat.meta1556632090.mat.meta1568252347.mat.meta1580009455.mat.meta1659897039.mat.meta1670160698.mat.meta1692493091.mat.meta1704837334.mat.meta1717444261.mat.meta1739460917.mat.meta1767002623.mat.meta1772791499.mat.meta1841997986.mat.meta1846757793.mat.meta1847907842.mat.meta1849660902.mat.meta1892877949.mat.meta1899344832.mat.meta1942141328.mat.meta1998554402.mat.meta2030778644.mat.meta2038172114.mat.meta2056516474.mat.meta2086589292.mat.meta2126790404.mat.meta2150757578.mat.meta2164612953.mat.meta2173349684.mat.meta2179085644.mat.meta2224894161.mat.meta2231992728.mat.meta2236099016.mat.meta2270965971.mat.meta2308993049.mat.meta2329426606.mat.meta2330919951.mat.meta2341708282.mat.meta2365482467.mat.meta2374156310.mat.meta2412091565.mat.meta2422519158.mat.meta242956612.mat.meta2663927093.mat.meta2671497964.mat.meta2712042832.mat.meta2717376397.mat.meta2748594355.mat.meta2768759778.mat.meta2773309832.mat.meta279519651.mat.meta2798732219.mat.meta2818854931.mat.meta282571981.mat.meta2827258663.mat.meta2872434622.mat.meta291057203.mat.meta2951302974.mat.meta2955110083.mat.meta2984523060.mat.meta3010969751.mat.meta3021603982.mat.meta3069336989.mat.meta3075384026.mat.meta312143936.mat.meta3212549395.mat.meta3226047052.mat.meta3262379475.mat.meta3273471000.mat.meta3295735809.mat.meta3336766882.mat.meta333862325.mat.meta3341047381.mat.meta3353932625.mat.meta3363614085.mat.meta3437553339.mat.meta344691116.mat.meta3523271540.mat.meta3570599973.mat.meta3572509830.mat.meta3610657690.mat.meta3639508904.mat.meta3644564855.mat.meta368522329.mat.meta3705907492.mat.meta3749952433.mat.meta3755923179.mat.meta3896304250.mat.meta3942533584.mat.meta3962488102.mat.meta4014519825.mat.meta40224011.mat.meta4032495685.mat.meta4059208281.mat.meta4065270110.mat.meta4118968099.mat.meta4127354831.mat.meta4136476578.mat.meta4147561564.mat.meta4203081856.mat.meta420772151.mat.meta4227421557.mat.meta423142768.mat.meta4237594988.mat.meta4259853465.mat.meta4272373903.mat.meta445651814.mat.meta508718230.mat.meta508911977.mat.meta514692701.mat.meta528925730.mat.meta539264358.mat.meta591534960.mat.meta632347983.mat.meta675833814.mat.meta690632569.mat.meta712937773.mat.meta728259273.mat.meta756241716.mat.meta766900231.mat.meta779439783.mat.meta80054534.mat.meta811395433.mat.meta831380125.mat.meta855384395.mat.meta880088689.mat.meta895650739.mat.meta914047818.mat.meta920657540.mat.meta948720418.mat.meta977943163.mat.meta
Model
Script
Project3D
BundleData
Res_newMS
ChangJing
kuafu
Moxing
Boss
BOSS_tiemuzhen
Moster
MS_baiwuchang
MS_haidao
MS_heiyiren
MS_jianshi
MS_qixuezhu
NPC
NPC_bukuai
NPC_changyoucai
NPC_ssdizi01
NPC_ssdizi02
Player
Wing
xiaowujian
Sence_beifen
zhucheng
Particles
TeXiao
Fbxs
Effect
zhaohuanshi_FBX
T4M
Editor
UnusedAssets
Res_newMS
ChangJing
Particles
TeXiao
Fbxs
Effect
Mod
ExcelTexts
ProjectSettings

@ -0,0 +1,277 @@
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
#if UNITY_EDITOR && UNITY_2021_1_OR_NEWER
using Screen = UnityEngine.Device.Screen; // To support Device Simulator on Unity 2021.1+
#endif
// Manager class for the debug popup
namespace IngameDebugConsole
{
public class DebugLogPopup : MonoBehaviour, IPointerClickHandler, IBeginDragHandler, IDragHandler, IEndDragHandler
{
private RectTransform popupTransform;
// Dimensions of the popup divided by 2
private Vector2 halfSize;
// Background image that will change color to indicate an alert
private Image backgroundImage;
// Canvas group to modify visibility of the popup
private CanvasGroup canvasGroup;
#pragma warning disable 0649
[SerializeField]
private DebugLogManager debugManager;
[SerializeField]
private Text newInfoCountText;
[SerializeField]
private Text newWarningCountText;
[SerializeField]
private Text newErrorCountText;
[SerializeField]
private Color alertColorInfo;
[SerializeField]
private Color alertColorWarning;
[SerializeField]
private Color alertColorError;
#pragma warning restore 0649
// Number of new debug entries since the log window has been closed
private int newInfoCount = 0, newWarningCount = 0, newErrorCount = 0;
private Color normalColor;
private bool isPopupBeingDragged = false;
private Vector2 normalizedPosition;
// Coroutines for simple code-based animations
private IEnumerator moveToPosCoroutine = null;
private void Awake()
{
popupTransform = (RectTransform) transform;
backgroundImage = GetComponent<Image>();
canvasGroup = GetComponent<CanvasGroup>();
normalColor = backgroundImage.color;
halfSize = popupTransform.sizeDelta * 0.5f;
Vector2 pos = popupTransform.anchoredPosition;
if( pos.x != 0f || pos.y != 0f )
normalizedPosition = pos.normalized; // Respect the initial popup position set in the prefab
else
normalizedPosition = new Vector2( 0.5f, 0f ); // Right edge by default
}
public void NewLogsArrived( int newInfo, int newWarning, int newError )
{
if( newInfo > 0 )
{
newInfoCount += newInfo;
newInfoCountText.text = newInfoCount.ToString();
}
if( newWarning > 0 )
{
newWarningCount += newWarning;
newWarningCountText.text = newWarningCount.ToString();
}
if( newError > 0 )
{
newErrorCount += newError;
newErrorCountText.text = newErrorCount.ToString();
}
if( newErrorCount > 0 )
backgroundImage.color = alertColorError;
else if( newWarningCount > 0 )
backgroundImage.color = alertColorWarning;
else
backgroundImage.color = alertColorInfo;
}
private void Reset()
{
newInfoCount = 0;
newWarningCount = 0;
newErrorCount = 0;
newInfoCountText.text = "0";
newWarningCountText.text = "0";
newErrorCountText.text = "0";
backgroundImage.color = normalColor;
}
// A simple smooth movement animation
private IEnumerator MoveToPosAnimation( Vector2 targetPos )
{
float modifier = 0f;
Vector2 initialPos = popupTransform.anchoredPosition;
while( modifier < 1f )
{
modifier += 4f * Time.unscaledDeltaTime;
popupTransform.anchoredPosition = Vector2.Lerp( initialPos, targetPos, modifier );
yield return null;
}
}
// Popup is clicked
public void OnPointerClick( PointerEventData data )
{
// Hide the popup and show the log window
if( !isPopupBeingDragged )
debugManager.ShowLogWindow();
}
// Hides the log window and shows the popup
public void Show()
{
canvasGroup.blocksRaycasts = true;
canvasGroup.alpha = 1f;
// Reset the counters
Reset();
// Update position in case resolution was changed while the popup was hidden
UpdatePosition( true );
}
// Hide the popup
public void Hide()
{
canvasGroup.blocksRaycasts = false;
canvasGroup.alpha = 0f;
isPopupBeingDragged = false;
}
public void OnBeginDrag( PointerEventData data )
{
isPopupBeingDragged = true;
// If a smooth movement animation is in progress, cancel it
if( moveToPosCoroutine != null )
{
StopCoroutine( moveToPosCoroutine );
moveToPosCoroutine = null;
}
}
// Reposition the popup
public void OnDrag( PointerEventData data )
{
Vector2 localPoint;
if( RectTransformUtility.ScreenPointToLocalPointInRectangle( debugManager.canvasTR, data.position, data.pressEventCamera, out localPoint ) )
popupTransform.anchoredPosition = localPoint;
}
// Smoothly translate the popup to the nearest edge
public void OnEndDrag( PointerEventData data )
{
isPopupBeingDragged = false;
UpdatePosition( false );
}
// There are 2 different spaces used in these calculations:
// RectTransform space: raw anchoredPosition of the popup that's in range [-canvasSize/2, canvasSize/2]
// Safe area space: Screen.safeArea space that's in range [safeAreaBottomLeft, safeAreaTopRight] where these corner positions
// are all positive (calculated from bottom left corner of the screen instead of the center of the screen)
public void UpdatePosition( bool immediately )
{
Vector2 canvasRawSize = debugManager.canvasTR.rect.size;
// Calculate safe area bounds
float canvasWidth = canvasRawSize.x;
float canvasHeight = canvasRawSize.y;
float canvasBottomLeftX = 0f;
float canvasBottomLeftY = 0f;
if( debugManager.popupAvoidsScreenCutout )
{
#if UNITY_2017_2_OR_NEWER && ( UNITY_EDITOR || UNITY_ANDROID || UNITY_IOS )
Rect safeArea = Screen.safeArea;
int screenWidth = Screen.width;
int screenHeight = Screen.height;
canvasWidth *= safeArea.width / screenWidth;
canvasHeight *= safeArea.height / screenHeight;
canvasBottomLeftX = canvasRawSize.x * ( safeArea.x / screenWidth );
canvasBottomLeftY = canvasRawSize.y * ( safeArea.y / screenHeight );
#endif
}
// Calculate safe area position of the popup
// normalizedPosition allows us to glue the popup to a specific edge of the screen. It becomes useful when
// the popup is at the right edge and we switch from portrait screen orientation to landscape screen orientation.
// Without normalizedPosition, popup could jump to bottom or top edges instead of staying at the right edge
Vector2 pos = canvasRawSize * 0.5f + ( immediately ? new Vector2( normalizedPosition.x * canvasWidth, normalizedPosition.y * canvasHeight ) : ( popupTransform.anchoredPosition - new Vector2( canvasBottomLeftX, canvasBottomLeftY ) ) );
// Find distances to all four edges of the safe area
float distToLeft = pos.x;
float distToRight = canvasWidth - distToLeft;
float distToBottom = pos.y;
float distToTop = canvasHeight - distToBottom;
float horDistance = Mathf.Min( distToLeft, distToRight );
float vertDistance = Mathf.Min( distToBottom, distToTop );
// Find the nearest edge's safe area coordinates
if( horDistance < vertDistance )
{
if( distToLeft < distToRight )
pos = new Vector2( halfSize.x, pos.y );
else
pos = new Vector2( canvasWidth - halfSize.x, pos.y );
pos.y = Mathf.Clamp( pos.y, halfSize.y, canvasHeight - halfSize.y );
}
else
{
if( distToBottom < distToTop )
pos = new Vector2( pos.x, halfSize.y );
else
pos = new Vector2( pos.x, canvasHeight - halfSize.y );
pos.x = Mathf.Clamp( pos.x, halfSize.x, canvasWidth - halfSize.x );
}
pos -= canvasRawSize * 0.5f;
normalizedPosition.Set( pos.x / canvasWidth, pos.y / canvasHeight );
// Safe area's bottom left coordinates are added to pos only after normalizedPosition's value
// is set because normalizedPosition is in range [-canvasWidth / 2, canvasWidth / 2]
pos += new Vector2( canvasBottomLeftX, canvasBottomLeftY );
// If another smooth movement animation is in progress, cancel it
if( moveToPosCoroutine != null )
{
StopCoroutine( moveToPosCoroutine );
moveToPosCoroutine = null;
}
if( immediately )
popupTransform.anchoredPosition = pos;
else
{
// Smoothly translate the popup to the specified position
moveToPosCoroutine = MoveToPosAnimation( pos );
StartCoroutine( moveToPosCoroutine );
}
}
}
}