update: add event bus

deeplink
胡宇飞 2024-05-06 20:34:07 +08:00
parent 1ecd077085
commit 252de80d7d
80 changed files with 6220 additions and 17 deletions

View File

@ -60,7 +60,7 @@ namespace Guru.Editor
#region 构建 Android 接口
/// <summary>
///
/// 构建 Android 包体
/// </summary>
/// <param name="buildParam"></param>
/// <returns></returns>

View File

@ -117,6 +117,7 @@ namespace Guru
{
_badsloadStartTime = Time.realtimeSinceStartup;
_chanelMax.LoadBannerAD();
OnBannerStartLoad?.Invoke(_chanelMax.MaxBADSSlotID);
}
#endregion
@ -148,6 +149,7 @@ namespace Guru
private void OnLoadMaxIV() {
_iadsLoadStartTime = Time.realtimeSinceStartup; // 更新计时器
_chanelMax.LoadInterstitialAD();
OnInterstitialStartLoad?.Invoke(_chanelMax.MaxIADSSlotID);
}
@ -180,6 +182,7 @@ namespace Guru
{
_radsLoadStartTime = Time.realtimeSinceStartup; // 更新计时器
_chanelMax.LoadRewardAD();
OnRewardStartLoad?.Invoke(_chanelMax.MaxRADSSlotID);
}

View File

@ -26,11 +26,14 @@ namespace Guru
protected Action _onSdkInitReady;
public static Action<string> OnBannerStartLoad;
public static Action OnBannerLoaded;
public static Action<string> OnInterstitialStartLoad;
public static Action OnInterstitialLoaded;
public static Action OnInterstitialFailed;
public static Action<string> OnRewardStartLoad;
public static Action OnRewardLoaded;
public static Action OnRewardFailed;
@ -545,7 +548,7 @@ namespace Guru
if (IsRadsLoading) return;
OnLoadRads();
var id = GetRewardedVideoID();
var id = GetRewardedID();
Analytics.ADRadsLoad(AdParams.Build(id)); // 上报打点
MaxSdk.LoadRewardedAd(id);
}
@ -561,7 +564,7 @@ namespace Guru
if (!IsInitialized)
return false;
return MaxSdk.IsRewardedAdReady(GetRewardedVideoID());
return MaxSdk.IsRewardedAdReady(GetRewardedID());
}
/// <summary>
@ -589,7 +592,7 @@ namespace Guru
_rewardAction = rewardAction;
_failAction = failAction;
_dismissAction = dismissAction;
MaxSdk.ShowRewardedAd(GetRewardedVideoID());
MaxSdk.ShowRewardedAd(GetRewardedID());
// RequestRewardedAD();
}
@ -684,7 +687,7 @@ namespace Guru
#region Ad Settings
protected virtual string GetRewardedVideoID()
protected virtual string GetRewardedID()
{
return GuruSettings.Instance.ADSetting.GetRewardedVideoID();
}

View File

@ -0,0 +1,18 @@
namespace Guru
{
public static class ADServiceEvent
{
public const string ADSERVICE_READY = "evt_adservice_ready";
public const string BADS_LOAD_START = "evt_bads_load_start";
public const string BADS_LOADED = "evt_bads_loaded";
public const string BADS_LOAD_FAILED = "evt_bads_load_failed";
public const string BADS_IMP = "evt_bads_imp";
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 48d4ca9d7e6c4393bf13f6ce619145bc
timeCreated: 1714970592

View File

@ -21,9 +21,9 @@ namespace Guru
#region 广告位
// ---------------- Max 广告位ID --------------------
internal string MaxBannerSlotID => GuruSettings.Instance.ADSetting.GetBannerID();
internal string MaxIVSlotID => GuruSettings.Instance.ADSetting.GetInterstitialID();
internal string MaxRVSlotID => GuruSettings.Instance.ADSetting.GetRewardedVideoID();
internal string MaxBADSSlotID => GuruSettings.Instance.ADSetting.GetBannerID();
internal string MaxIADSSlotID => GuruSettings.Instance.ADSetting.GetInterstitialID();
internal string MaxRADSSlotID => GuruSettings.Instance.ADSetting.GetRewardedVideoID();
#endregion
@ -49,11 +49,11 @@ namespace Guru
{
// Banners are automatically sized to 320x50 on phones and 728x90 on tablets
// You may use the utility method `MaxSdkUtils.isTablet()` to help with view sizing adjustments
MaxSdk.CreateBanner(MaxBannerSlotID, MaxSdkBase.BannerPosition.BottomCenter);
MaxSdk.SetBannerExtraParameter(MaxBannerSlotID, "adaptive_banner", "false");
MaxSdk.CreateBanner(MaxBADSSlotID, MaxSdkBase.BannerPosition.BottomCenter);
MaxSdk.SetBannerExtraParameter(MaxBADSSlotID, "adaptive_banner", "false");
// Set background or background color for banners to be fully functional
MaxSdk.SetBannerBackgroundColor(MaxBannerSlotID, _backColor);
Analytics.ADBadsLoad(AdParams.Build(MaxBannerSlotID));
MaxSdk.SetBannerBackgroundColor(MaxBADSSlotID, _backColor);
Analytics.ADBadsLoad(AdParams.Build(MaxBADSSlotID));
}
public void SetBannerBackColor(string hex)
@ -69,8 +69,8 @@ namespace Guru
public bool IsInterstitialRequestOver => true;
public void LoadInterstitialAD()
{
Analytics.ADIadsLoad(AdParams.Build(MaxIVSlotID)); // 上报打点
MaxSdk.LoadInterstitial(MaxIVSlotID);
Analytics.ADIadsLoad(AdParams.Build(MaxIADSSlotID)); // 上报打点
MaxSdk.LoadInterstitial(MaxIADSSlotID);
}
#endregion
@ -80,8 +80,8 @@ namespace Guru
public bool IsRewardRequestOver => true;
public void LoadRewardAD()
{
Analytics.ADRadsLoad(AdParams.Build(MaxRVSlotID)); // 上报打点
MaxSdk.LoadRewardedAd(MaxRVSlotID);
Analytics.ADRadsLoad(AdParams.Build(MaxRADSSlotID)); // 上报打点
MaxSdk.LoadRewardedAd(MaxRADSSlotID);
}
#endregion

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 31cc00ccd21c4fdc9fb6ea0163677367
timeCreated: 1714955721

View File

@ -0,0 +1,327 @@
namespace Guru
{
using UnityEngine;
using System.Collections.Generic;
using System;
public class EventBus: MonoBehaviour
{
private const string Tag = "[EventBus]";
private static bool _initOnce = false;
private Dictionary<string, List<Delegate>> _normalEvents;
private Dictionary<string, List<Delegate>> _mainThreadEvents;
private Queue<MainThreadEvent> _mainThreadQueue;
private Queue<MainThreadEvent> _mainThreadEventPool;
private static EventBus _instance;
public static EventBus Instance {
get
{
if (_instance == null)
{
if (GuruSDKCallback.Instance != null)
{
_instance = AttachOnHost(GuruSDKCallback.Instance); // Set to the host object
}
}
return _instance;
}
}
public static EventBus AttachOnHost(GameObject go)
{
var ins = go.AddComponent<EventBus>();
ins.Init();
return ins;
}
public static EventBus AttachOnHost(Component component)
{
return component.gameObject.AddComponent<EventBus>();
}
#region API
public static void Bind(string evtName, Action<object> callback)
{
if (Instance == null)
{
LogE($"{Tag} EventBus is not ready");
return;
}
Instance.AddNormalEvent(evtName, callback);
}
public static void UnBind(string evtName, Action<object> callback)
{
if (Instance == null)
{
LogE($"{Tag} EventBus is not ready");
return;
}
Instance.RemoveNormalEvent(evtName, callback);
}
public static void BindOnMainThread(string evtName, Action<object> callback)
{
if (Instance == null)
{
LogE($"{Tag} EventBus is not ready");
return;
}
Instance.AddNormalEventOnMainThread(evtName, callback);
}
public static void UnBindOnMainThread(string evtName, Action<object> callback)
{
if (Instance == null)
{
LogE($"{Tag} EventBus is not ready");
return;
}
Instance.RemoveNormalEventOnMainThread(evtName, callback);
}
public static void Send(string evtName, object evt)
{
if (Instance == null)
{
LogE($"{Tag} EventBus is not ready");
return;
}
Instance.FireEvent(evtName, evt);
}
#endregion
#region Initialize Functions
private void Init()
{
if (_initOnce) return;
_initOnce = true;
_normalEvents = new Dictionary<string, List<Delegate>>(20);
_mainThreadEvents = new Dictionary<string, List<Delegate>>(20);
_mainThreadQueue = new Queue<MainThreadEvent>(20);
_mainThreadEventPool = new Queue<MainThreadEvent>(20);
}
private void AddEvent(string evtName, Action<object> callback, ref Dictionary<string, List<Delegate>> dict)
{
if (dict == null) dict = new Dictionary<string, List<Delegate>>(20);
if (!IsEventExists(evtName, dict))
{
dict[evtName] = new List<Delegate>(20);
}
if (!dict[evtName].Contains(callback))
{
dict[evtName].Add(callback);
}
}
private void RemoveEvent(string evtName, Action<object> callback, ref Dictionary<string, List<Delegate>> dict)
{
if (dict == null)
{
dict = new Dictionary<string, List<Delegate>>(20);
return;
}
if (IsEventExists(evtName, dict) && dict[evtName].Contains(callback))
{
dict[evtName].Remove(callback);
}
}
private bool IsEventExists(string eventName, Dictionary<string , List<Delegate>> events)
{
if(events == null) return false;
return events.ContainsKey(eventName);
}
#endregion
#region Normal Events
private void AddNormalEvent(string evtName, Action<object> callback)
{
AddEvent(evtName, callback, ref _normalEvents);
}
private void AddNormalEventOnMainThread(string evtName, Action<object> callback)
{
AddEvent(evtName, callback, ref _mainThreadEvents);
}
private void RemoveNormalEvent(string evtName, Action<object> callback)
{
RemoveEvent(evtName, callback, ref _normalEvents);
}
private void RemoveNormalEventOnMainThread(string evtName, Action<object> callback)
{
RemoveEvent(evtName, callback, ref _mainThreadEvents);
}
private void FireEvent(string evtName, object evtObject)
{
// ---------- Normal Events ------------
if (_normalEvents.TryGetValue(evtName, out var listeners))
{
int i = 0;
while (i < listeners.Count)
{
listeners[i]?.DynamicInvoke(evtObject);
i++;
}
return;
}
// ---------- Main Thread Events ------------
if (IsEventExists(evtName, _mainThreadEvents))
{
AddEventToMainThread(evtName, evtObject);
return;
}
// ---------- Send Events Failed ------------
LogE($"{Tag} EventBus:: Fire event [{evtName}] not found");
}
#endregion
#region Logger
private static void LogI(object msg)
{
UnityEngine.Debug.Log(msg);
}
private static void LogE(object msg)
{
UnityEngine.Debug.LogError(msg);
}
#endregion
#region Mono Lifecycle
private void Update()
{
ConsumeMainThreadEvent(); // 消费主线程事件
}
#endregion
#region ThreadQueueInfo
internal struct MainThreadEvent
{
public string eventName;
public object eventBody;
public void Setup(string evtName, object evtBody)
{
eventName = evtName;
eventBody = evtBody;
}
public void Clear()
{
eventName = null;
eventBody = null;
}
}
private MainThreadEvent GetMainThreadEvent(string evtName, object evtBody)
{
MainThreadEvent evt;
if (_mainThreadEventPool != null && _mainThreadEventPool.Count > 0)
{
evt = _mainThreadEventPool.Dequeue();
}
else
{
evt = new MainThreadEvent();
}
evt.Setup(evtName, evtBody);
return evt;
}
private void AddEventToMainThread(string evtName, object evtBody)
{
if(_mainThreadQueue == null) _mainThreadQueue = new Queue<MainThreadEvent>(20);
_mainThreadQueue.Enqueue(GetMainThreadEvent(evtName, evtBody));
}
private void SaveMainThreadEvent(MainThreadEvent evt)
{
if (_mainThreadEventPool == null)
{
_mainThreadEventPool = new Queue<MainThreadEvent>(20);
}
evt.Clear();
_mainThreadEventPool.Enqueue(evt);
}
private void ConsumeMainThreadEvent()
{
if (_mainThreadQueue != null && _mainThreadQueue.Count > 0)
{
while (_mainThreadQueue.Count > 0)
{
var evt = _mainThreadQueue.Dequeue();
FireEvent(evt.eventName, evt.eventBody);
SaveMainThreadEvent(evt);
}
}
}
#endregion
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5e386f6917c242d48ba0913b1c2713ce
timeCreated: 1714955737

View File

@ -5,7 +5,7 @@ namespace Guru
/// </summary>
public partial class GameDefine
{
public static string CompanyName = "Guru Fun Game Studio";
public static string CompanyName = "Guru Game";
public const string MACRO_LOG = "ENABLE_LOG";
public const string MACRO_DEBUG = "DEBUG";
public const string MACRO_RELEASE = "RELEASE";

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d717553eea6bf4338b9f3059be371e71
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,60 @@
# Guru Debugger 面板
Version 1.0.0
# 使用方法
调用方式, 可直接调用
```c#
// 首次调用需要初始化
Debugger.Init():
// TODO: 加入你的Layout初始化方法
// 显示 Debugger:
Debuggger.Show();
// 关闭回调
Debugger.OnClose += OnDebuggerClose;
private void OnDebuggerClose(){
// TODO: do sth when debugger is closed
}
```
Layout 初始化
```c#
// 添加一个条目
// 一般一个条目的构成为 {tab}/{option} 的方式
// 添加一个 Key - Value item
Debugger.Instance.AddOption("Start Info/Test Key", "Test Value");
// 添加一个整体可点击的 Item
Debugger.Instance.AddOption("Start Info/Yes, click me", "", () => {
// TODO: the item is a pure button, add click event.
});
// 添加一个 Button
Debugger.Instance.AddOption("Start Info/Test Key", "Test Value")
.AddButton("Button", ()=>{
// TODO: do sth when button is clicked
});
// Option 可以添加更多的内容, 但是不建议超过 5 个
Debugger.Instance.AddOption("Start Info/Test2", "valueof2")
.AddLabel("Sth else to add")
.AddCopyButton();
```

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 48c5db714459493d8d02ecaf89f1c2ac
timeCreated: 1711084921

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 036a24160e57d414290c124d76a4a66f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d58fb9f98adf4830b25ff52a810ffdd6
timeCreated: 1714471155

View File

@ -0,0 +1,42 @@
namespace Guru.Debugger
{
public class AdStatus
{
private static AdStatusPresenter _adp;
private static bool _inited;
public static void Install()
{
if (_inited) return;
_inited = true;
_adp = new AdStatusPresenter();
_adp.Init();
}
public static void ShowMonitor()
{
if(!_inited) Install();
if (_adp != null)
{
_adp.ShowMonitor();
}
}
public static void HideMonitor()
{
if(!_inited) Install();
if (_adp != null)
{
_adp.HideMonitor();
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2d3bb9dff8e44e5c8d76a505ebf0e5c0
timeCreated: 1714188842

View File

@ -0,0 +1,14 @@
namespace Guru.Debugger
{
public class AdStatusConsts
{
public static readonly int MaxInfoCount = 20;
public static readonly string ColorGreen = "88FF00";
public static readonly string ColorRed = "FF0000";
public static readonly string ColorGray = "747474";
public static readonly string ColorYellow = "FFE700";
public static readonly float MonitorStartAlpha = 0.72f;
public static readonly float MonitorStayTime = 5f;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 707f290f7f5a40959be9a2e4cc3f7196
timeCreated: 1714190216

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: afeefc6f0b0b4a88b274a24366952bd1
timeCreated: 1714189118

View File

@ -0,0 +1,59 @@
namespace Guru.Debugger
{
using System;
/// <summary>
/// 广告类型
/// </summary>
public enum AdType
{
Banner,
Interstitial,
Rewarded,
}
/// <summary>
/// 广告状态枚举
/// </summary>
public enum AdStatusType
{
NotReady,
Loading,
Loaded,
LoadFailed,
DisplayFailed,
Closed,
Paid,
Clicked
}
/// <summary>
/// 广告状态信息
/// </summary>
public class AdStatusInfo
{
public string adUnitId;
public AdType adType;
public AdStatusType status = AdStatusType.NotReady;
public string info;
public DateTime date;
public string network;
public string creativeId;
public double revenue;
public string waterfall;
public string format;
public string GetDate() => date.ToString("yy-MM-dd HH:mm:ss");
public string ToLogString()
{
return $"[{GetDate()}] {adType}:{status}\tid:{adUnitId}\tname:{format}\tnetwork{network}\trevenue:{revenue}\twaterfall:{waterfall}\tinfo:{info}";
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: acca1ff8fa8e4b22a42b1e99d6f0da06
timeCreated: 1714189132

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a03478ca777c43ce8cbf5e029732621f
timeCreated: 1714189110

View File

@ -0,0 +1,68 @@
using System;
namespace Guru.Debugger
{
public class AdStatusModel
{
public string monitorInfo;
public int bannerTotalCount = 0;
public int bannerSuccessCount = 0;
public int bannerFailCount = 0;
public int interstitialTotalCount = 0;
public int interstitialSuccessCount = 0;
public int interstitialFailCount = 0;
public int rewardedTotalCount = 0;
public int rewardedSuccessCount = 0;
public int rewardedFailCount = 0;
public void AddBannerCount(bool success)
{
bannerTotalCount++;
if (success)
{
bannerSuccessCount++;
}
else
{
bannerFailCount++;
}
}
public void AddInterCount(bool success)
{
interstitialTotalCount++;
if (success)
{
interstitialSuccessCount++;
}
else
{
interstitialFailCount++;
}
}
public void AddRewardCount(bool success)
{
rewardedTotalCount++;
if (success)
{
rewardedSuccessCount++;
}
else
{
rewardedFailCount++;
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 0d43f5b89b964c17bc59f0e51dbe472b
timeCreated: 1714180020

View File

@ -0,0 +1,111 @@
namespace Guru.Debugger
{
using System;
using UnityEngine.EventSystems;
using UnityEngine;
using UnityEngine.UI;
using Consts=AdStatusConsts;
public class AdStatusMonitorView : MonoBehaviour, IDragHandler, IEndDragHandler, IBeginDragHandler, IPointerClickHandler
{
public bool Active
{
get => gameObject.activeSelf;
set => gameObject.SetActive(value);
}
public float Alpha
{
get => _canvasGroup?.alpha ?? 0;
set
{
if(_canvasGroup != null)
_canvasGroup.alpha = value;
}
}
[SerializeField] private CanvasGroup _canvasGroup;
[SerializeField] private Text _txtInfo;
private IPointerClickHandler _pointerClickHandlerImplementation;
private DateTime _clickStartDate;
private bool _isOnDraging = false;
public Action OnClickHandler;
public Action OnDestryHandler;
// Start is called before the first frame update
void Awake()
{
Alpha = Consts.MonitorStartAlpha;
}
public void OnDrag(PointerEventData eventData)
{
var delat = eventData.delta;
transform.localPosition += new Vector3(delat.x, delat.y, 0);
}
public void OnBeginDrag(PointerEventData eventData)
{
Alpha = 1;
// _clickStartDate = DateTime.Now;
_isOnDraging = true;
}
public void OnEndDrag(PointerEventData eventData)
{
// var sp = DateTime.Now - _clickStartDate;
// Debug.Log($"Drag Time: {sp.TotalSeconds}");
_isOnDraging = false;
OnPanelActivated();
}
public void OnPointerClick(PointerEventData eventData)
{
if (_isOnDraging) return;
// Debug.Log($"Click Handler delta: {eventData.delta} isMoving: {eventData.IsPointerMoving()}");
OnClickHandler?.Invoke();
OnPanelActivated();
}
/// <summary>
/// 数据刷新
/// </summary>
/// <param name="info"></param>
public void OnUpdateInfo(string info)
{
_txtInfo.text = info;
}
private void OnPanelActivated()
{
Alpha = 1;
CancelInvoke(nameof(OnbResetAlpha));
Invoke(nameof(OnbResetAlpha), Consts.MonitorStayTime); // 自动置灰
}
private void OnbResetAlpha()
{
if (_canvasGroup == null) return;
Alpha = Consts.MonitorStartAlpha;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ed7d7e0d6ce2048c1bacbd901b97c752
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,416 @@
namespace Guru.Debugger
{
using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using Consts=AdStatusConsts;
public partial class AdStatusPresenter
{
private Queue<AdStatusInfo> _bannerInfos;
private Queue<AdStatusInfo> _interInfos;
private Queue<AdStatusInfo> _rewardInfos;
private AdStatusInfo _curBadsInfo;
private AdStatusInfo _curIadsInfo;
private AdStatusInfo _curRadsInfo;
#region InfoContainer
/// <summary>
/// 添加对应的 Info
/// </summary>
/// <param name="info"></param>
private void AddBannerInfo(AdStatusInfo info)
{
if (_bannerInfos.Count >= AdStatusConsts.MaxInfoCount)
{
_bannerInfos.Dequeue();
}
Debug.Log(info.ToLogString());
_bannerInfos.Enqueue(info);
_curBadsInfo = info;
OnStatueChanged(info);
}
private void AddInterInfo(AdStatusInfo info)
{
if (_interInfos.Count >= AdStatusConsts.MaxInfoCount)
{
_interInfos.Dequeue();
}
_interInfos.Enqueue(info);
_curIadsInfo = info;
OnStatueChanged(info);
}
private void AddRewardInfo(AdStatusInfo info)
{
if (_rewardInfos.Count >= AdStatusConsts.MaxInfoCount)
{
_rewardInfos.Dequeue();
}
_rewardInfos.Enqueue(info);
_curRadsInfo = info;
OnStatueChanged(info);
}
private void OnStatueChanged(AdStatusInfo info)
{
_model.monitorInfo = CreateMonitorInfo();
if (info != null)
{
int code = 0;
if (info.status == AdStatusType.LoadFailed || info.status == AdStatusType.DisplayFailed)
{
code = -1;
}
else if (info.status == AdStatusType.Loaded)
{
code = 1;
}
switch (info.adType)
{
case AdType.Banner:
if(code == 1) _model.AddBannerCount(true);
else if(code == -1) _model.AddBannerCount(false);
break;
case AdType.Interstitial:
if(code == 1) _model.AddInterCount(true);
else if(code == -1) _model.AddInterCount(false);
break;
case AdType.Rewarded:
if(code == 1) _model.AddRewardCount(true);
else if(code == -1) _model.AddRewardCount(false);
break;
}
}
UpdateView(); // 刷新视图
}
private string CreateMonitorInfo()
{
string msg = "";
bool loaded = false;
StringBuilder sb = new StringBuilder();
if (GuruSDK.IsAdsReady)
{
msg = ColoredText("AdService not initialized...", Consts.ColorRed);
return msg;
}
if (_curBadsInfo == null)
{
msg = $"BADS: {ColoredText("not ready", Consts.ColorRed)}\n";
}
else
{
switch (_curBadsInfo.status)
{
case AdStatusType.Loaded:
msg = $"BADS: {ColoredText("loaded", Consts.ColorGreen)}\n\tnetwork: {_curBadsInfo.network}\n\twaterfall: {_curBadsInfo.waterfall}\n";
break;
case AdStatusType.LoadFailed:
msg = $"BADS: {ColoredText("loading failed", Consts.ColorRed)}\n\tmessage: {_curBadsInfo.info}\n";
break;
case AdStatusType.DisplayFailed:
msg = $"BADS: {ColoredText("display failed", Consts.ColorRed)}\n\tmessage: {_curBadsInfo.info}\n";
break;
case AdStatusType.Loading:
msg = $"BADS: {ColoredText("loading...", Consts.ColorYellow)}\n\tformat: {_curBadsInfo.format}\n";
break;
case AdStatusType.Paid:
msg = $"BADS: {ColoredText("display", Consts.ColorGreen)}\n\tnetwork: {_curIadsInfo.network}\n\trevenue: {_curBadsInfo.revenue}\n";
break;
case AdStatusType.NotReady:
msg = $"BADS: {ColoredText("not ready", Consts.ColorGray)}\n\t{ColoredText("---", Consts.ColorGray)}\n";
break;
default:
msg = $"BADS: {ColoredText("other", Consts.ColorGray)}\n\tstatus: {ColoredText($"{_curBadsInfo.status}", Consts.ColorYellow)}\n";
break;
}
}
sb.Append(msg);
if (_curIadsInfo == null)
{
msg = $"IADS: {ColoredText("not ready", Consts.ColorRed)}\n";
}
else
{
switch (_curIadsInfo.status)
{
case AdStatusType.Loaded:
msg = $"IADS: {ColoredText("loaded", Consts.ColorGreen)}\n\tnetwork: {_curIadsInfo.network}\n\twaterfall: {_curBadsInfo.waterfall}\n";
break;
case AdStatusType.LoadFailed:
msg = $"IADS: {ColoredText("loading failed", Consts.ColorRed)}\n\tmessage: {_curIadsInfo.info}\n";
break;
case AdStatusType.DisplayFailed:
msg = $"IADS: {ColoredText("display failed", Consts.ColorRed)}\n\tmessage: {_curIadsInfo.info}\n";
break;
case AdStatusType.Loading:
msg = $"IADS: {ColoredText("loading...", Consts.ColorYellow)}\n\tformat: {_curIadsInfo.format}\n";
break;
case AdStatusType.Paid:
msg = $"IADS: {ColoredText("get revenue", Consts.ColorGreen)}\n\trevenue: {_curIadsInfo.revenue}\n";
break;
case AdStatusType.NotReady:
msg = $"IADS: {ColoredText("not ready", Consts.ColorGray)}\n\t{ColoredText("---", Consts.ColorGray)}\n";
break;
default:
msg = $"IADS: {ColoredText("other", Consts.ColorGray)}\n\tstatus: {ColoredText($"{_curIadsInfo.status}", Consts.ColorYellow)}\n";
break;
}
}
sb.Append(msg);
if (_curRadsInfo == null)
{
msg = $"RADS: {ColoredText("not ready", Consts.ColorRed)}\n";
}
else
{
switch (_curRadsInfo.status)
{
case AdStatusType.Loaded:
msg = $"RADS: {ColoredText("loaded", Consts.ColorGreen)}\n\tnetwork: {_curRadsInfo.network}\n\twaterfall: {_curRadsInfo.waterfall}\n";
break;
case AdStatusType.LoadFailed:
msg = $"RADS: {ColoredText("loading failed", Consts.ColorRed)}\n\tmessage: {_curRadsInfo.info}\n";
break;
case AdStatusType.DisplayFailed:
msg = $"RADS: {ColoredText("display failed", Consts.ColorRed)}\n\tmessage: {_curRadsInfo.info}\n";
break;
case AdStatusType.Loading:
msg = $"RADS: {ColoredText("loading...", Consts.ColorYellow)}\n\tformat: {_curRadsInfo.format}\n";
break;
case AdStatusType.Paid:
msg = $"RADS: {ColoredText("get revenue", Consts.ColorGreen)}\n\trevenue: {_curRadsInfo.revenue}\n";
break;
case AdStatusType.NotReady:
msg = $"RADS: {ColoredText("not ready", Consts.ColorGray)}\n\t{ColoredText("---", Consts.ColorGray)}\n";
break;
default:
msg = $"RADS: {ColoredText("other", Consts.ColorGray)}\n\tstatus: {ColoredText($"{_curRadsInfo.status}", Consts.ColorYellow)}\n";
break;
}
}
sb.Append(msg);
return sb.ToString();
}
private string ColoredText(string content, string hexColor = "000000")
{
return $"<color=#{hexColor}>{content}</color>";
}
#endregion
#region AppLovin
private void InitAdsCallbacks()
{
AddCallbacks();
_bannerInfos = new Queue<AdStatusInfo>(AdStatusConsts.MaxInfoCount);
_interInfos = new Queue<AdStatusInfo>(AdStatusConsts.MaxInfoCount);
_rewardInfos = new Queue<AdStatusInfo>(AdStatusConsts.MaxInfoCount);
}
private void AddCallbacks()
{
//----------------- Banner -----------------
GuruSDK.Callbacks.Ads.OnBannerADStartLoad += OnBannerAdLoadEvent;
MaxSdkCallbacks.Banner.OnAdLoadedEvent += OnBannerAdLoadedEvent;
MaxSdkCallbacks.Banner.OnAdLoadFailedEvent += OnBannerAdLoadFailEvent;
MaxSdkCallbacks.Banner.OnAdRevenuePaidEvent += OnBannerAdRevenuePaidEvent;
MaxSdkCallbacks.Banner.OnAdClickedEvent += OnBannerAdClickedEvent;
//----------------- Interstitials -----------------
GuruSDK.Callbacks.Ads.OnInterstitialADStartLoad += OnInterAdLoadEvent;
MaxSdkCallbacks.Interstitial.OnAdLoadedEvent += OnInterAdLoadedEvent;
MaxSdkCallbacks.Interstitial.OnAdLoadFailedEvent += OnInterAdLoadFailEvent;
MaxSdkCallbacks.Interstitial.OnAdDisplayFailedEvent += OnInterAdDisplayFailEvent;
MaxSdkCallbacks.Interstitial.OnAdRevenuePaidEvent += OnInterAdRevenuePaidEvent;
MaxSdkCallbacks.Interstitial.OnAdClickedEvent += OnInterAdClickedEvent;
MaxSdkCallbacks.Interstitial.OnAdHiddenEvent += OnInterAdHiddenEvent;
//----------------- Reward -----------------
Guru.GuruSDK.Callbacks.Ads.OnRewardedADStartLoad += OnRewardedStartLoad;
MaxSdkCallbacks.Rewarded.OnAdLoadedEvent += OnRewardAdLoadedEvent;
MaxSdkCallbacks.Rewarded.OnAdLoadFailedEvent += OnRewardAdLoadFailEvent;
MaxSdkCallbacks.Rewarded.OnAdDisplayFailedEvent += OnRewardAdDisplayFailEvent;
MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnRewardAdRevenuePaidEvent;
MaxSdkCallbacks.Rewarded.OnAdClickedEvent += OnRewardAdClickedEvent;
MaxSdkCallbacks.Rewarded.OnAdHiddenEvent += OnRewardAdHiddenEvent;
}
//-------------- Banner ------------------
private void OnBannerAdLoadEvent(string adUnitId)
{
AddBannerInfo(CreateLoadingInfo(adUnitId, AdType.Banner));
}
private void OnBannerAdLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddBannerInfo(CreateLoadedInfo(adUnitId, AdType.Banner, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
private void OnBannerAdLoadFailEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
{
var waterfall = errorInfo.WaterfallInfo?.Name ?? "";
var format = "BADS";
var msg = $"[{errorInfo.MediatedNetworkErrorCode}] {errorInfo.MediatedNetworkErrorMessage}";
var network = "error";
AddBannerInfo(CreateFailInfo(adUnitId, AdType.Banner, network, format, waterfall, msg));
}
private void OnBannerAdClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddBannerInfo(CreateClosedInfo(adUnitId, AdType.Banner, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
private void OnBannerAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddBannerInfo(CreatePaidInfo(adUnitId, AdType.Banner, adInfo.Revenue, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
//----------------- Interstitial -----------------
private void OnInterAdLoadEvent(string adUnitId)
{
AddInterInfo(CreateLoadingInfo(adUnitId, AdType.Interstitial));
}
private void OnInterAdHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddInterInfo(CreateClosedInfo(adUnitId, AdType.Interstitial, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
private void OnInterAdClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddInterInfo(CreateClickedInfo(adUnitId, AdType.Interstitial, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
private void OnInterAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddInterInfo(CreatePaidInfo(adUnitId, AdType.Interstitial, adInfo.Revenue, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
private void OnInterAdLoadFailEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
{
var waterfall = errorInfo.WaterfallInfo?.Name ?? "";
var format = "IADS";
var msg = $"[{errorInfo.MediatedNetworkErrorCode}] {errorInfo.MediatedNetworkErrorMessage}";
var network = "error";
AddInterInfo(CreateFailInfo(adUnitId, AdType.Interstitial, network, format, waterfall, msg));
}
private void OnInterAdDisplayFailEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo, MaxSdkBase.AdInfo adInfo)
{
var waterfall = errorInfo.WaterfallInfo?.Name ?? "";
var format = adInfo.AdFormat;
var msg = $"[{errorInfo.MediatedNetworkErrorCode}] {errorInfo.MediatedNetworkErrorMessage}";
var network = adInfo.NetworkName;
AddInterInfo(CreateFailInfo(adUnitId, AdType.Interstitial, network, format, waterfall, msg, true));
}
private void OnInterAdLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddInterInfo(CreateLoadedInfo(adUnitId, AdType.Interstitial, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
//----------------- Reward -----------------
private void OnRewardedStartLoad(string adUnitId)
{
AddRewardInfo(CreateLoadingInfo(adUnitId, AdType.Rewarded));
}
private void OnRewardAdHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddRewardInfo(CreateClosedInfo(adUnitId, AdType.Rewarded, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
private void OnRewardAdClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddRewardInfo(CreateClickedInfo(adUnitId, AdType.Rewarded, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
private void OnRewardAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddRewardInfo(CreatePaidInfo(adUnitId, AdType.Rewarded, adInfo.Revenue, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
private void OnRewardAdLoadFailEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
{
var waterfall = errorInfo.WaterfallInfo?.Name ?? "";
var format = "IADS";
var msg = $"[{errorInfo.MediatedNetworkErrorCode}] {errorInfo.MediatedNetworkErrorMessage}";
var network = "error";
AddRewardInfo(CreateFailInfo(adUnitId, AdType.Rewarded, network, format, waterfall, msg));
}
private void OnRewardAdDisplayFailEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo, MaxSdkBase.AdInfo adInfo)
{
var waterfall = errorInfo.WaterfallInfo?.Name ?? "";
var format = adInfo.AdFormat;
var msg = $"[{errorInfo.MediatedNetworkErrorCode}] {errorInfo.MediatedNetworkErrorMessage}";
var network = adInfo.NetworkName;
AddRewardInfo(CreateFailInfo(adUnitId, AdType.Rewarded, network, format, waterfall, msg, true));
}
private void OnRewardAdLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var waterfall = adInfo.WaterfallInfo?.Name ?? "";
AddRewardInfo(CreateLoadedInfo(adUnitId, AdType.Rewarded, adInfo.NetworkName, adInfo.AdFormat, waterfall));
}
#endregion
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 17f2898f0a96448f91b71112d7bf19dc
timeCreated: 1714190118

View File

@ -0,0 +1,101 @@
namespace Guru.Debugger
{
using System;
public partial class AdStatusPresenter
{
internal static AdStatusInfo CreateLoadingInfo(string adUnitId, AdType adType)
{
return new AdStatusInfo
{
adUnitId = adUnitId,
adType = adType,
status = AdStatusType.Loading,
date = DateTime.Now,
};
}
internal static AdStatusInfo CreateLoadedInfo(string adUnitId, AdType adType, string network, string format, string waterfall)
{
return new AdStatusInfo
{
adUnitId = adUnitId,
adType = adType,
status = AdStatusType.Loaded,
date = DateTime.Now,
network = network,
format = format,
waterfall = waterfall
};
}
internal static AdStatusInfo CreateFailInfo(string adUnitId, AdType adType, string network, string format, string waterfall, string message = "", bool disPlayError = false)
{
if (string.IsNullOrEmpty(network)) network = "unknown";
return new AdStatusInfo
{
adUnitId = adUnitId,
adType = adType,
status = disPlayError ? AdStatusType.LoadFailed : AdStatusType.DisplayFailed,
date = DateTime.Now,
info = message,
network = network,
format = format,
waterfall = waterfall
};
}
internal static AdStatusInfo CreateClosedInfo(string adUnitId, AdType adType, string network, string format, string waterfall)
{
if (string.IsNullOrEmpty(network)) network = "unknown";
return new AdStatusInfo
{
adUnitId = adUnitId,
adType = adType,
status = AdStatusType.Closed,
date = DateTime.Now,
network = network,
format = format,
waterfall = waterfall
};
}
internal static AdStatusInfo CreatePaidInfo(string adUnitId, AdType adType, double revenue, string network, string format, string waterfall)
{
if (string.IsNullOrEmpty(network)) network = "unknown";
return new AdStatusInfo
{
adUnitId = adUnitId,
adType = adType,
status = AdStatusType.Paid,
date = DateTime.Now,
revenue = revenue,
network = network,
format = format,
waterfall = waterfall
};
}
internal static AdStatusInfo CreateClickedInfo(string adUnitId, AdType adType, string network, string format, string waterfall)
{
if (string.IsNullOrEmpty(network)) network = "unknown";
return new AdStatusInfo
{
adUnitId = adUnitId,
adType = adType,
status = AdStatusType.Clicked,
date = DateTime.Now,
network = network,
format = format,
waterfall = waterfall
};
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 70de9f517f574b00ad3b5e88933bba06
timeCreated: 1714189561

View File

@ -0,0 +1,81 @@
using UnityEngine;
namespace Guru.Debugger
{
public partial class AdStatusPresenter
{
const string K_DEBUGGER_ROOT = "ui/debugger_root";
private AdStatusMonitorView _monitor;
private AdStatusModel _model;
public void Init()
{
_model = new AdStatusModel();
LoadDebuggerRoot();
InitAdsCallbacks();
}
/// <summary>
/// Debugger Root
/// </summary>
private void LoadDebuggerRoot()
{
var prefab = Resources.Load<GameObject>(K_DEBUGGER_ROOT);
if (prefab != null)
{
var go = GameObject.Instantiate(prefab);
go.name = "__debugger_root__";
var t = go.transform.Find("root/ads_status_monitor");
if (t != null)
{
_monitor = t.GetComponent<AdStatusMonitorView>();
if (_monitor != null)
{
_monitor.OnUpdateInfo("ads is on loading...");
_monitor.Active = false;
}
}
}
}
private void UpdateView()
{
if (_model == null) return;
_monitor.OnUpdateInfo(_model.monitorInfo);
}
internal void ShowMonitor()
{
if (_monitor == null) return;
_monitor.Active = true;
}
internal void HideMonitor()
{
if (_monitor == null) return;
_monitor.Active = false;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 85c881cbd1224a23a1e305a13602fe0a
timeCreated: 1714180008

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d0d21acdf9214513b93ebcc7b58f2c8d
timeCreated: 1714136951

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 326887151680842e4ad2390b0dfa1953
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,331 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5150702560827386885
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5150702560827386906}
m_Layer: 5
m_Name: root
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5150702560827386906
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702560827386885}
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_Children:
- {fileID: 5150702562168738941}
m_Father: {fileID: 5150702561338006477}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &5150702561338006473
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5150702561338006477}
- component: {fileID: 5150702561338006476}
- component: {fileID: 5150702561338006479}
- component: {fileID: 5150702561338006478}
m_Layer: 5
m_Name: debugger_root
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5150702561338006477
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702561338006473}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 5150702560827386906}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!223 &5150702561338006476
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702561338006473}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 2000
m_TargetDisplay: 0
--- !u!114 &5150702561338006479
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702561338006473}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1080, y: 2048}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!114 &5150702561338006478
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702561338006473}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!1 &5150702562168738940
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5150702562168738941}
- component: {fileID: 5150702562168738931}
- component: {fileID: 5150702562168738930}
- component: {fileID: 6987031650776014463}
- component: {fileID: 5150702562168738928}
m_Layer: 5
m_Name: ads_status_monitor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5150702562168738941
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702562168738940}
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_Children:
- {fileID: 5150702562590427462}
m_Father: {fileID: 5150702560827386906}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: -249, y: 378}
m_SizeDelta: {x: 480, y: 320}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5150702562168738931
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702562168738940}
m_CullTransparentMesh: 1
--- !u!114 &5150702562168738930
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702562168738940}
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: 0, g: 0, b: 0, a: 0.8627451}
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: 0}
m_Type: 0
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!225 &6987031650776014463
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702562168738940}
m_Enabled: 1
m_Alpha: 0.8
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!114 &5150702562168738928
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702562168738940}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ed7d7e0d6ce2048c1bacbd901b97c752, type: 3}
m_Name:
m_EditorClassIdentifier:
_canvasGroup: {fileID: 6987031650776014463}
_txtInfo: {fileID: 5150702562590427463}
--- !u!1 &5150702562590427457
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5150702562590427462}
- component: {fileID: 5150702562590427460}
- component: {fileID: 5150702562590427463}
m_Layer: 5
m_Name: txt_info
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5150702562590427462
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702562590427457}
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_Children: []
m_Father: {fileID: 5150702562168738941}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -20, y: -20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5150702562590427460
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702562590427457}
m_CullTransparentMesh: 1
--- !u!114 &5150702562590427463
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5150702562590427457}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: '11111
22222
33333
44444
55555
66666'

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4332e3ea47cf5426c90ffcb6817292e6
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f78334aec158543b2b8fc6157f69764b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: be43df6b6918346819c7938339e0fb93
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,291 @@
namespace Guru.Debugger
{
using System;
using UnityEngine;
using UnityEngine.UI;
using G = GlobalVars;
using System.Collections.Generic;
using System.Linq;
public class GuruDebugger
{
public const string Version = "1.0.0";
private static bool _initOnce = false;
private static GuruDebugger _instance;
public static GuruDebugger Instance
{
get
{
if (_instance == null)
{
Init();
}
return _instance;
}
}
public static event Action OnClosed
{
add
{
if (_onViewClosed == null)
{
_onViewClosed = value;
}
else
{
_onViewClosed += value;
}
}
remove
{
if (_onViewClosed != null)
{
_onViewClosed -= value;
}
}
}
private static Action _onViewClosed;
private DebuggerViewRoot _viewRoot;
private Dictionary<string, List<OptionLayout>> optionDicts;
private string _curTabName;
public static void Init()
{
if (_instance == null) _initOnce = false;
if (_initOnce) return;
_initOnce = true;
_instance = new GuruDebugger();
_instance.StartService();
}
private void StartService()
{
_viewRoot = DebuggerViewRoot.Instance;
optionDicts = new Dictionary<string, List<OptionLayout>>(5);
G.Events.OnUIEvent += OnUIEvent;
}
private void OnUIEvent(string evt, object data)
{
switch (evt)
{
case G.Events.EventTabClicked:
OnSelectTab(data.ToString());
break;
case G.Events.EventViewClosed:
optionDicts?.Clear();
_onViewClosed?.Invoke();
break;
}
}
#region UI Layout
public OptionLayout AddOption(string uri, string content = "", Action clickHandler = null)
{
string tabName = G.Consts.DefaultTabName;
string optName = G.Consts.DefaultOptionName;
if (uri.Contains("/"))
{
var names = uri.Split('/');
if (names.Length > 0)
{
tabName = names[0];
}
if(names.Length > 1) optName = names[1];
}
if (!optionDicts.ContainsKey(tabName))
{
optionDicts[tabName] = new List<OptionLayout>(10);
}
OptionLayout opt = new OptionLayout();
opt.tabName = tabName;
opt.optName = optName;
opt.content = content;
opt.selfClickHandler = clickHandler;
AddOptionLayout(tabName, opt);
return opt;
}
private void AddOptionLayout(string tabName, OptionLayout layout)
{
if (!optionDicts.ContainsKey(tabName))
{
optionDicts[tabName] = new List<OptionLayout>(20);
}
optionDicts[tabName].Add(layout);
}
public void ShowPage(string tabName = "")
{
if (string.IsNullOrEmpty(tabName)
&& optionDicts != null && optionDicts.Count > 0)
{
tabName = optionDicts.Keys.First();
}
if (!string.IsNullOrEmpty(tabName))
{
RenderPage(tabName);
}
}
/// <summary>
/// 渲染页面
/// </summary>
/// <param name="tabName"></param>
private void RenderPage(string tabName)
{
if (string.IsNullOrEmpty(tabName)) return;
_viewRoot.Show();
_viewRoot.RefreshTabs(tabName, optionDicts.Keys.ToList());
_viewRoot.CleanOptions();
if (optionDicts.TryGetValue(tabName, out var opts))
{
OptionLayout ol;
UIOptionItem ui;
for (int i = 0; i < opts.Count; i++)
{
ol = opts[i];
ui = _viewRoot.RegisterOption(ol.optName, ol.content);
if (ol.selfClickHandler != null)
{
var btnName = ol.content;
if (string.IsNullOrEmpty(btnName)) btnName = ol.optName;
var btn = _viewRoot.AddOptionButton(ui, btnName, ol.selfClickHandler);
ui.Clickable = true;
continue;
}
foreach (var item in ol.items)
{
switch (item.type)
{
case "button":
var btn = _viewRoot.AddOptionButton(ui, item.name, item.clickHandler);
if (!item.size.Equals(Vector2.zero)) btn.Size = item.size;
break;
case "label":
var lb = _viewRoot.AddOptionLabel(ui, item.name, item.align);
if (!item.size.Equals(Vector2.zero)) lb.Size = item.size;
break;
}
}
}
}
else
{
Debug.LogError($"{tabName} not found!");
}
}
private void OnSelectTab(string tabName)
{
if (_curTabName == tabName) return;
Instance.ShowPage(tabName);
}
#endregion
#region Display
public static void Show(string tabName = "")
{
Instance.ShowPage(tabName);
}
public static void Hide() => Instance._viewRoot.Hide();
#endregion
#region DebuggerOption
public class OptionLayout
{
public string optName;
public string content;
public string tabName;
public Action selfClickHandler;
internal List<OptionItemLayout> items;
public OptionLayout()
{
items = new List<OptionItemLayout>(10);
}
public OptionLayout AddLabel(string labelName)
{
items.Add(new OptionItemLayout()
{
name = labelName,
type = "label",
});
return this;
}
public OptionLayout AddButton(string btnName, Action onClick)
{
items.Add(new OptionItemLayout()
{
name = btnName,
type = "button",
clickHandler = onClick
});
return this;
}
}
internal class OptionItemLayout
{
public string type;
public Action clickHandler;
public string name;
public string content;
public TextAnchor align = TextAnchor.MiddleCenter;
public Vector2 size = Vector2.zero;
}
#endregion
}
public static class OptionLayoutExtension
{
public static GuruDebugger.OptionLayout AddCopyButton(this GuruDebugger.OptionLayout layout, Action onClick = null)
{
layout.AddButton("Copy", ()=>
{
GUIUtility.systemCopyBuffer = layout.content;
onClick?.Invoke();
});
return layout;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f5ccddaa61334c748afe7c39cf8e11b7
timeCreated: 1711014134

View File

@ -0,0 +1,34 @@
namespace Guru.Debugger
{
using System;
using UnityEngine;
public static class GlobalVars
{
public class Events
{
public const string EventTabClicked = "evt_tab_clicked";
public const string EventViewClosed = "evt_view_closed";
public static Action<string, object> OnUIEvent = (e, o) => { };
}
public class Consts
{
public const string DefaultTabName = "Tab";
public const string DefaultOptionName = "Opt";
}
public class Colors
{
public static Color Gray = new Color(1,1,1, 0.12f);
public static Color Gray2 = new Color(1,1,1, 0.036f);
public static Color LightGreen = new Color(0.02f,1,1, 0.788f);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1f8d5969a496489eab759e7ff15a9cdc
timeCreated: 1711021436

View File

@ -0,0 +1,57 @@
using System;
using UnityEngine;
namespace Guru.Debugger
{
public class UIComponent: MonoBehaviour
{
public virtual long GID { get; protected set; }
public virtual string ID => $"{GID}";
public Transform Parent
{
get => transform.parent;
set
{
transform.SetParent(value);
transform.localPosition = Vector3.zero;
}
}
public Vector2 Size
{
get => _rectTransform.sizeDelta;
set => _rectTransform.sizeDelta = value;
}
public bool Active
{
get => gameObject.activeSelf;
set => gameObject.SetActive(value);
}
protected RectTransform _rectTransform;
private void Awake()
{
_rectTransform = gameObject.GetComponent<RectTransform>();
OnCreated();
}
protected virtual void OnCreated()
{
}
/// <summary>
/// 刷新UI
/// </summary>
public virtual void Refresh()
{
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c65140f21e494b6fa50779248643af52
timeCreated: 1711063080

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4351260f681b42d9851e353f24f3b05a
timeCreated: 1711018597

View File

@ -0,0 +1,221 @@
using System.Collections.Generic;
namespace Guru.Debugger
{
using System;
using UnityEngine;
using G = GlobalVars;
public partial class DebuggerViewRoot
{
[SerializeField] private UITabItem _tabPrefab;
[SerializeField] private UIOptionItem _optPrefab;
[SerializeField] private VButton _btnPrefab;
[SerializeField] private VLabel _labelPrefab;
private Queue<UITabItem> _tabPools;
private Queue<UIOptionItem> _optPools;
private List<UITabItem> _displayedTabs;
private List<UIOptionItem> _displayedOptions;
private long _tabIds = 0;
private long _optIds = 0;
private long _btnIds = 0;
private long _lbIds = 0;
private void InitFactory()
{
_tabPools = new Queue<UITabItem>(10);
_optPools = new Queue<UIOptionItem>(20);
_tabPrefab.Parent = _binNode;
_optPrefab.Parent = _binNode;
_displayedTabs = new List<UITabItem>(10);
_displayedOptions = new List<UIOptionItem>(20);
}
#region Tabs
public UITabItem RegisterTab(string tabNam)
{
var tab = GetTab(tabNam);
_displayedTabs.Add(tab);
return tab;
}
public UITabItem BuildTab(string tabName)
{
var go = Instantiate(_tabPrefab.gameObject, _tabContent);
go.SetActive(true);
var tab = go.GetComponent<UITabItem>();
tab.InitWithData(_tabIds, tabName);
tab.OnRecycle = OnTabRecycle;
tab.OnClicked = OnTabClicked;
_tabIds++;
return tab;
}
private void OnTabClicked(string tabName)
{
G.Events.OnUIEvent?.Invoke(G.Events.EventTabClicked, tabName);
}
private void OnTabRecycle(UITabItem tab)
{
_displayedTabs.Remove(tab);
tab.Parent = _binNode;
tab.transform.localPosition = Vector3.zero;
_tabPools.Enqueue(tab);
}
private UITabItem GetTab(string tabName)
{
if (_tabPools.Count > 0)
{
var tab = _tabPools.Dequeue();
tab.Label = tabName;
tab.Parent = _tabContent;
return tab;
}
return BuildTab(tabName);
}
#endregion
#region Options
public UIOptionItem RegisterOption(string optName, string content = "")
{
var opt = GetOption(optName);
opt.Content = content;
opt.Refresh();
_displayedOptions.Add(opt);
return opt;
}
public UIOptionItem BuildOption(string optName)
{
var go = Instantiate(_optPrefab.gameObject, _optContent);
go.SetActive(true);
var opt = go.GetComponent<UIOptionItem>();
opt.InitWithData(_optIds, optName);
opt.OnRecycle = OnOptionRecycle;
_optIds++;
return opt;
}
private UIOptionItem GetOption(string name)
{
if (_optPools.Count > 0)
{
var opt = _optPools.Dequeue();
opt.Label = name;
opt.Parent = _optContent;
return opt;
}
return BuildOption(name);
}
/// <summary>
/// 选项回收
/// </summary>
/// <param name="opt"></param>
private void OnOptionRecycle(UIOptionItem opt)
{
_displayedOptions.Remove(opt);
opt.Parent = _binNode;
opt.transform.localPosition = Vector3.zero;
_optPools.Enqueue(opt);
}
#endregion
#region Button
public VButton BuildButton(string name, Action onClick, Transform parent)
{
var go = Instantiate(_btnPrefab.gameObject, parent);
var btn = go.GetComponent<VButton>();
btn.Label = name;
btn.OnClicked = onClick;
btn.Size = new Vector2(120, 0);
return btn;
}
#region 添加组件
internal VButton AddOptionButton(UIOptionItem option, string btnName, Action btnHandler)
{
var btn = BuildButton(btnName, btnHandler, option.Root);
option.AddChild(btn.gameObject);
return btn;
}
internal VLabel AddOptionLabel(UIOptionItem option, string label, TextAnchor align = TextAnchor.MiddleCenter)
{
var lb = BuildLabel(label, align, option.Root);
option.AddChild(lb.gameObject);
return lb;
}
#endregion
#endregion
#region Label
public VLabel BuildLabel(string lbName, TextAnchor align, Transform parent)
{
var go = Instantiate(_labelPrefab.gameObject, parent);
go.name = lbName;
var label = go.GetComponent<VLabel>();
label.Text = lbName;
label.Align = align;
label.Size = new Vector2(300, 0);
return label;
}
#endregion
#region Recycle
internal void CleanTabs()
{
while (_displayedTabs.Count > 0)
{
var tab = _displayedTabs[0];
tab.Dispose();
}
}
internal void CleanOptions()
{
while (_displayedOptions.Count > 0)
{
var opt = _displayedOptions[0];
opt.Dispose();
}
}
#endregion
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 3a8636631ec74eeea6dff03bdc79c03c
timeCreated: 1711026127

View File

@ -0,0 +1,151 @@
using UnityEngine.EventSystems;
namespace Guru.Debugger
{
using UnityEngine;
using UnityEngine.UI;
using G = GlobalVars;
using System;
using System.Collections.Generic;
public partial class DebuggerViewRoot: UIComponent, IViewFactory, IWidgetFactory
{
[SerializeField] private Canvas _canvas;
[SerializeField] private CanvasGroup _canvasGroup;
[SerializeField] private RectTransform _tabContent;
[SerializeField] private RectTransform _optContent;
[SerializeField] private RectTransform _binNode;
[SerializeField] private Button _btnClose;
private const string PrefabPath = "ui/debugger_root";
private const string InstanceName = "__debugger__";
private static DebuggerViewRoot _instance;
public static DebuggerViewRoot Instance
{
get
{
if (_instance == null) _instance = CreateInstance();
return _instance;
}
}
private EventSystem _eventSystem;
#region Static Calls
private static DebuggerViewRoot CreateInstance()
{
var p = Resources.Load<GameObject>(PrefabPath);
if (p != null)
{
var go = Instantiate(p);
DontDestroyOnLoad(go);
go.name = InstanceName;
return go.GetComponent<DebuggerViewRoot>();
}
return null;
}
#endregion
#region Initialization
private void Awake()
{
Init();
}
private void Init()
{
InitFactory();
_btnClose.onClick.AddListener(OnCloseBtnEvent);
if (EventSystem.current == null)
{
SetupEventSystem();
}
else
{
_eventSystem = EventSystem.current;
}
Hide();
}
private void SetupEventSystem()
{
var go = new GameObject(nameof(EventSystem));
var es = go.AddComponent<EventSystem>();
go.AddComponent<StandaloneInputModule>();
es.transform.parent = transform;
_eventSystem = es;
}
private void OnCloseBtnEvent()
{
Hide();
OnSelfClosed();
}
#endregion
#region Display
public void Show() => Active = true;
public void Hide() => Active = false;
#endregion
#region Pages
internal void RefreshTabs(string tanName, List<string> tabs = null)
{
if (tabs == null)
{
tabs = new List<string>(_displayedTabs.Count);
foreach (var t in _displayedTabs)
{
tabs.Add(t.Label);
}
}
CleanTabs();
foreach (var tn in tabs)
{
var tab = RegisterTab(tn);
tab.Selected = tn == tanName;
tab.OnClicked = OnTabClicked;
}
}
#endregion
#region Dispos
private void OnSelfClosed()
{
CleanTabs();
CleanOptions();
G.Events.OnUIEvent?.Invoke(G.Events.EventViewClosed, null);
}
#endregion
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 128174e534964447a73e381ca1fadd0f
timeCreated: 1711018610

View File

@ -0,0 +1,22 @@
namespace Guru.Debugger
{
using System;
using UnityEngine;
public interface IViewFactory
{
UITabItem BuildTab(string tabName);
UIOptionItem BuildOption(string optName);
}
public interface IWidgetFactory
{
VButton BuildButton(string name, Action onClick, Transform parent);
VLabel BuildLabel(string lbName, TextAnchor align, Transform parent);
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d783b7f8e37f48f3bc36e2877c6143b3
timeCreated: 1711025708

View File

@ -0,0 +1,114 @@
using System;
using System.Collections.Generic;
namespace Guru.Debugger
{
using UnityEngine;
using UnityEngine.UI;
public class UIOptionItem: UIComponent
{
[SerializeField] private RectTransform _root;
[SerializeField] private VLabel _label;
[SerializeField] private VLabel _content;
[SerializeField] private Image _bgImage;
public Action<UIOptionItem> OnRecycle;
private List<GameObject> _children;
public Transform Root => _root;
public string Label
{
get => _label.Text;
set => _label.Text = value;
}
public string Content
{
get => _content.Text;
set
{
_content.Text = value;
_content.Active = !string.IsNullOrEmpty(value);
}
}
private bool _clickable = false;
public bool Clickable
{
get => _clickable;
set
{
_clickable = value;
_label.Active = !_clickable;
_content.Active = !_clickable;
}
}
public void InitWithData(long gid, string optName = "")
{
GID = gid;
name = $"opt_{gid}";
_children = new List<GameObject>(10);
if (string.IsNullOrEmpty(optName))
{
_label.Active = false;
}
else
{
Label = optName;
}
_label.Align = TextAnchor.MiddleLeft;
_content.Align = TextAnchor.MiddleLeft;
}
public void Dispose()
{
Clickable = false;
ClearChildren();
OnRecycle?.Invoke(this);
}
private void ClearChildren()
{
if(_children != null && _children.Count > 0)
{
foreach (var child in _children)
{
Destroy(child);
}
_children.Clear();
}
}
public void AddChild(GameObject obj)
{
_children.Add(obj);
}
public override void Refresh()
{
var idx = transform.GetSiblingIndex();
_bgImage.color = idx % 2 == 0 ? GlobalVars.Colors.Gray : GlobalVars.Colors.Gray2;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8010bd3b4bfd4274997d438a1d99ae19
timeCreated: 1711024532

View File

@ -0,0 +1,93 @@
namespace Guru.Debugger
{
using UnityEngine;
using System;
using UnityEngine.UI;
using G = GlobalVars;
public class UITabItem: UIComponent
{
[SerializeField] private VButton _btn;
private string _label;
public string Label
{
get => _label;
set
{
_label = value;
_btn.Label = value;
}
}
private bool _selected = false;
public bool Selected
{
get => _selected;
set
{
_selected = value;
Refresh();
}
}
public Action<string> OnClicked;
public Action<UITabItem> OnRecycle;
#region Init
protected override void OnCreated()
{
_btn.OnClicked = OnTabClickedEvent;
}
private void OnTabClickedEvent()
{
Selected = !Selected;
OnClicked?.Invoke(_label);
Refresh();
}
public void InitWithData(long gid, string label = "")
{
GID = gid;
name = $"tab_{GID}";
_btn.name = "_btn";
if (!string.IsNullOrEmpty(label))
{
Label = label;
}
}
#endregion
#region UI
public override void Refresh()
{
_btn.Color = Selected? G.Colors.LightGreen: G.Colors.Gray;
}
#endregion
#region Recycle
public void Dispose()
{
OnClicked = null;
OnRecycle?.Invoke(this);
}
#endregion
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 74db3f6a69ff47f0880e1250393e6f7f
timeCreated: 1711020325

View File

@ -0,0 +1,52 @@
namespace Guru.Debugger
{
using System;
using UnityEngine;
using UnityEngine.UI;
public class VButton: UIComponent
{
[SerializeField] private Image _image;
[SerializeField] private Text _label;
[SerializeField] private Button _button;
public string Label
{
get => _label.text;
set => _label.text = value;
}
public Action OnClicked;
public Color Color
{
get => _image.color;
set => _image.color = value;
}
public Color LabelColor
{
get => _label.color;
set => _label.color = value;
}
protected override void OnCreated()
{
_button.onClick.AddListener(OnSelfClicked);
}
private void OnSelfClicked()
{
OnClicked?.Invoke();
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cd788ac6ee4f4afe9d57738d49a3fdc4
timeCreated: 1711020763

View File

@ -0,0 +1,36 @@
using System;
namespace Guru.Debugger
{
using UnityEngine;
using UnityEngine.UI;
public class VLabel : UIComponent
{
[SerializeField] private Text _label;
public string Text
{
get => _label.text;
set => _label.text = value;
}
public Color Color
{
get => _label.color;
set => _label.color = value;
}
private TextAnchor _align;
public TextAnchor Align
{
get => _align;
set
{
_align = value;
_label.alignment = _align;
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e85702df90d74eb4892a7a742bcb0f05
timeCreated: 1711026040

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 47c2a153e811d49d1b9680abd08382f7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,206 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5161587445136557863
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 148257080420939497}
- component: {fileID: 1727577413956784551}
- component: {fileID: 2268706270294319084}
m_Layer: 5
m_Name: label
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &148257080420939497
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5161587445136557863}
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: 1939155628914972370}
m_RootOrder: 0
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: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1727577413956784551
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5161587445136557863}
m_CullTransparentMesh: 1
--- !u!114 &2268706270294319084
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5161587445136557863}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: INFO
--- !u!1 &8854415019278044657
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1939155628914972370}
- component: {fileID: 7097619541680742948}
- component: {fileID: 3799638908809225334}
- component: {fileID: 7483045806784872229}
m_Layer: 5
m_Name: btn_item
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1939155628914972370
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
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:
- {fileID: 148257080420939497}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 100, y: 50}
m_SizeDelta: {x: 200, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7097619541680742948
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
m_CullTransparentMesh: 1
--- !u!114 &3799638908809225334
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
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: 0.078431375, g: 1, b: 0.78765476, a: 0.5372549}
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: 0}
m_Type: 0
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!114 &7483045806784872229
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cd788ac6ee4f4afe9d57738d49a3fdc4, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 3799638908809225334}
m_OnClick:
m_PersistentCalls:
m_Calls: []
_image: {fileID: 0}
_label: {fileID: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c84e57ed527f24e6ab91e1cf45aa6ca4
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,391 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2528333701503730058
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 695922022511621486}
- component: {fileID: 412087832265673011}
m_Layer: 0
m_Name: root
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &695922022511621486
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2528333701503730058}
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:
- {fileID: 629926880474666585}
- {fileID: 7248743696833887442}
m_Father: {fileID: 4102609491836130493}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 10, y: 0}
m_SizeDelta: {x: -20, y: -20}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &412087832265673011
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2528333701503730058}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 3
m_Spacing: 6
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 1
m_ChildControlHeight: 1
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1 &4102609491836130490
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4102609491836130493}
- component: {fileID: 4102609491836130495}
- component: {fileID: 4102609491836130492}
- component: {fileID: 6345045228542041246}
m_Layer: 5
m_Name: opt_node_item
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4102609491836130493
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4102609491836130490}
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:
- {fileID: 695922022511621486}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 160}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4102609491836130495
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4102609491836130490}
m_CullTransparentMesh: 1
--- !u!114 &4102609491836130492
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4102609491836130490}
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: 0, g: 0, b: 0, a: 0.39215687}
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: 0}
m_Type: 0
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!114 &6345045228542041246
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4102609491836130490}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8010bd3b4bfd4274997d438a1d99ae19, type: 3}
m_Name:
m_EditorClassIdentifier:
_root: {fileID: 695922022511621486}
_label: {fileID: 2993293849972821997}
_content: {fileID: 5021256505751954790}
_bgImage: {fileID: 4102609491836130492}
--- !u!1001 &83327412588764366
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 695922022511621486}
m_Modifications:
- target: {fileID: 2277169281067990379, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_Name
value: _content
objectReference: {fileID: 0}
- target: {fileID: 4704551826277804405, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_Text
value: Content
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
--- !u!114 &5021256505751954790 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4937950594306488744, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
m_PrefabInstance: {fileID: 83327412588764366}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e85702df90d74eb4892a7a742bcb0f05, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!224 &7248743696833887442 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
m_PrefabInstance: {fileID: 83327412588764366}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &7858023797254583877
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 695922022511621486}
m_Modifications:
- target: {fileID: 2277169281067990379, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_Name
value: _label
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
--- !u!224 &629926880474666585 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 7327563488862494748, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
m_PrefabInstance: {fileID: 7858023797254583877}
m_PrefabAsset: {fileID: 0}
--- !u!114 &2993293849972821997 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4937950594306488744, guid: 4557ac9378ce94fd38269da8f9aa86e3, type: 3}
m_PrefabInstance: {fileID: 7858023797254583877}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e85702df90d74eb4892a7a742bcb0f05, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: db9336d7824134e1cb737eb3ba4c9d93
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,174 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7844578585297590383
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7844578585297590382}
- component: {fileID: 7844578585297590376}
- component: {fileID: 3730802781450377123}
m_Layer: 5
m_Name: tab_node_item
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7844578585297590382
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7844578585297590383}
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_Children:
- {fileID: 8727470446105646736}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 200, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7844578585297590376
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7844578585297590383}
m_CullTransparentMesh: 1
--- !u!114 &3730802781450377123
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7844578585297590383}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 74db3f6a69ff47f0880e1250393e6f7f, type: 3}
m_Name:
m_EditorClassIdentifier:
_btn: {fileID: 301294120361967463}
--- !u!1001 &7203357951589204034
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 7844578585297590382}
m_Modifications:
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_SizeDelta.x
value: 200
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_SizeDelta.y
value: 100
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_AnchoredPosition.x
value: 100
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_AnchoredPosition.y
value: 50
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8854415019278044657, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
propertyPath: m_Name
value: v_btn
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
--- !u!224 &8727470446105646736 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 1939155628914972370, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
m_PrefabInstance: {fileID: 7203357951589204034}
m_PrefabAsset: {fileID: 0}
--- !u!114 &301294120361967463 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7483045806784872229, guid: d0b72a82a22a748f89a2896a633bad10, type: 3}
m_PrefabInstance: {fileID: 7203357951589204034}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cd788ac6ee4f4afe9d57738d49a3fdc4, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e22e7dc3c05a644c08c833a3a2f42a16
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,233 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5161587445136557863
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 148257080420939497}
- component: {fileID: 1727577413956784551}
- component: {fileID: 2268706270294319084}
m_Layer: 5
m_Name: label
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &148257080420939497
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5161587445136557863}
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: 1939155628914972370}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1727577413956784551
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5161587445136557863}
m_CullTransparentMesh: 1
--- !u!114 &2268706270294319084
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5161587445136557863}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 10
m_MaxSize: 32
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: INFO
--- !u!1 &8854415019278044657
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1939155628914972370}
- component: {fileID: 7097619541680742948}
- component: {fileID: 3799638908809225334}
- component: {fileID: 8622626705591949948}
- component: {fileID: 7483045806784872229}
- component: {fileID: 5027051285820548675}
m_Layer: 5
m_Name: v_btn
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1939155628914972370
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
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:
- {fileID: 148257080420939497}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 100, y: 50}
m_SizeDelta: {x: 200, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7097619541680742948
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
m_CullTransparentMesh: 1
--- !u!114 &3799638908809225334
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
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.15686275}
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: 0}
m_Type: 0
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!114 &8622626705591949948
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 3799638908809225334}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &7483045806784872229
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cd788ac6ee4f4afe9d57738d49a3fdc4, type: 3}
m_Name:
m_EditorClassIdentifier:
_image: {fileID: 3799638908809225334}
_label: {fileID: 2268706270294319084}
_button: {fileID: 8622626705591949948}
--- !u!225 &5027051285820548675
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8854415019278044657}
m_Enabled: 1
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d0b72a82a22a748f89a2896a633bad10
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,133 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2277169281067990379
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7327563488862494748}
- component: {fileID: 4937950594306488744}
m_Layer: 5
m_Name: v_label
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7327563488862494748
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2277169281067990379}
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:
- {fileID: 6542213729106578396}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 160, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &4937950594306488744
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2277169281067990379}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e85702df90d74eb4892a7a742bcb0f05, type: 3}
m_Name:
m_EditorClassIdentifier:
_label: {fileID: 4704551826277804405}
--- !u!1 &9037852253254046115
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6542213729106578396}
- component: {fileID: 3463804050856076278}
- component: {fileID: 4704551826277804405}
m_Layer: 5
m_Name: text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6542213729106578396
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9037852253254046115}
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: 7327563488862494748}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3463804050856076278
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9037852253254046115}
m_CullTransparentMesh: 1
--- !u!114 &4704551826277804405
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9037852253254046115}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 10
m_MaxSize: 32
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Name

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4557ac9378ce94fd38269da8f9aa86e3
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0ebe768b61d1d4fa782e856b6bca6eff
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5c11309f0c00147efabb99ad473fa760
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 346f45e927caa428a96dfb925af7ceeb
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c72ccdd308b4438e84ba71a4bc049aff
timeCreated: 1711037647

View File

@ -0,0 +1,25 @@
using Guru;
using Guru.Debugger;
using UnityEngine;
public class DebugDemo : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
GuruDebugger.Init();
GuruDebugger.Instance.AddOption("INFO/page1", "DebugDemo")
.AddButton("AAA", () =>
{
Debug.Log("AAA");
})
.AddLabel("Test");
GuruDebugger.Show();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ea03c9090000940e3a5ae500d9d918bc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,509 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1001 &1243617387
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 5678077650178334411, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_SizeDelta.x
value: 200
objectReference: {fileID: 0}
- target: {fileID: 5678077650315353685, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_SizeDelta.y
value: 160
objectReference: {fileID: 0}
- target: {fileID: 5678077650315353685, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 870.00006
objectReference: {fileID: 0}
- target: {fileID: 5678077650501026979, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5678077650501026979, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5678077650501026979, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_SizeDelta.x
value: 1080
objectReference: {fileID: 0}
- target: {fileID: 5678077650501026979, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 540
objectReference: {fileID: 0}
- target: {fileID: 5678077650501026979, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: -80
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346832, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_Name
value: debugger_root
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346832, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_Pivot.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_Pivot.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650595346844, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5678077650929315700, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5678077650929315700, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5678077650929315700, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 100
objectReference: {fileID: 0}
- target: {fileID: 5678077650929315700, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: -50
objectReference: {fileID: 0}
- target: {fileID: 9123733450142156359, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9123733450142156359, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9123733450142156359, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9123733450142156359, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 346f45e927caa428a96dfb925af7ceeb, type: 3}
--- !u!1 &1409984334
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1409984337}
- component: {fileID: 1409984336}
- component: {fileID: 1409984335}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &1409984335
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1409984334}
m_Enabled: 1
--- !u!20 &1409984336
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1409984334}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &1409984337
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1409984334}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1597431377
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1597431379}
- component: {fileID: 1597431378}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &1597431378
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1597431377}
m_Enabled: 1
serializedVersion: 10
m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &1597431379
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1597431377}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &1847055078
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1847055080}
- component: {fileID: 1847055079}
m_Layer: 0
m_Name: Main
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1847055079
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1847055078}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ea03c9090000940e3a5ae500d9d918bc, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &1847055080
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1847055078}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1873ecc2969fb40fdb00731d8abfd8f7
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: