UI基本完成

This commit is contained in:
XgC2961 2025-08-30 15:33:51 +08:00
parent c7d2ecea3d
commit 1dd92333ae
8 changed files with 9733 additions and 9180 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,47 +1,50 @@
using UnityEngine; using System;
using System.Net.Sockets;
using System.Net; using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System; using UnityEngine;
public class BroadcastServer : MonoBehaviour public class BroadcastServer : MonoBehaviour
{ {
private UdpClient udpBroadcaster; // 用于广播本地IP的UDP客户端 private UdpClient udpClient; // 用于发送广播的UDP客户端
private Thread broadcastThread; // 运行广播循环的线程 private Thread broadcastThread; // 广播线程
private CancellationTokenSource cts = new CancellationTokenSource(); // 控制线程取消 private volatile bool isRunning = true; // 线程安全的运行标志
private volatile bool isRunning = true; // 控制广播循环的线程安全标志
// 脚本启动时调用 // 脚本启动时调用
void Start() void Start()
{ {
// 初始化UDP客户端并启用广播 udpClient = new UdpClient();
udpBroadcaster = new UdpClient(); udpClient.EnableBroadcast = true;
udpBroadcaster.EnableBroadcast = true;
// 启动新线程以广播本地IP // 启动广播线程
broadcastThread = new Thread(() => BroadcastIP(cts.Token)); broadcastThread = new Thread(BroadcastIP);
broadcastThread.Start(); broadcastThread.Start();
Debug.Log("广播服务器已启动");
Debug.Log("显示端正在广播IP...");
} }
// 定期广播本地IP地址 // 广播显示端服务器的IP地址
private void BroadcastIP(CancellationToken token) private void BroadcastIP()
{ {
// 定义广播端点IP: 255.255.255.255,端口: 9999 string localIP = GetLocalIPAddress();
IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, 9999); if (string.IsNullOrEmpty(localIP))
string localIP = GetLocalIPAddress(); // 获取本地IPv4地址 {
Debug.LogError("无法获取本地IP地址");
return;
}
// 在未取消的情况下持续广播 string message = $"ServerIP:{localIP}";
while (!token.IsCancellationRequested && isRunning) byte[] data = Encoding.UTF8.GetBytes(message);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, 8887);
while (isRunning)
{ {
try try
{ {
// 将IP地址转换为字节并通过UDP发送 udpClient.Send(data, data.Length, endPoint);
byte[] data = Encoding.UTF8.GetBytes(localIP); Debug.Log($"广播IP: {message}");
udpBroadcaster.Send(data, data.Length, endPoint); Thread.Sleep(1000); // 每秒广播一次
Thread.Sleep(2000); // 每2秒广播一次减少网络负载
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -50,30 +53,40 @@ public class BroadcastServer : MonoBehaviour
} }
} }
// 获取本机的IPv4地址 // 获取本地IP地址
private string GetLocalIPAddress() private string GetLocalIPAddress()
{ {
string localIP = "127.0.0.1"; // 如果未找到有效IP则回退到本地回环地址 try
foreach (var ip in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
{ {
if (ip.AddressFamily == AddressFamily.InterNetwork) foreach (var networkInterface in NetworkInterface.GetAllNetworkInterfaces())
{ {
localIP = ip.ToString(); // 使用找到的第一个IPv4地址 if (networkInterface.OperationalStatus == OperationalStatus.Up)
break; {
foreach (var unicastIPAddress in networkInterface.GetIPProperties().UnicastAddresses)
{
if (unicastIPAddress.Address.AddressFamily == AddressFamily.InterNetwork)
{
return unicastIPAddress.Address.ToString();
} }
} }
return localIP; }
}
}
catch (Exception ex)
{
Debug.LogError($"获取IP地址错误: {ex.Message}");
}
return "";
} }
// 应用程序退出时清理资源 // 应用程序退出时清理资源
private void OnApplicationQuit() private void OnApplicationQuit()
{ {
isRunning = false; // 通知广播循环停止 isRunning = false;
cts.Cancel(); // 请求线程取消 udpClient?.Close();
udpBroadcaster?.Close(); // 关闭UDP客户端
if (broadcastThread != null && broadcastThread.IsAlive) if (broadcastThread != null && broadcastThread.IsAlive)
{ {
broadcastThread.Join(1000); // 等待线程结束超时1秒 broadcastThread.Join(1000); // 等待线程结束
} }
} }
} }

View File

@ -5,6 +5,7 @@ using System.Text;
using System.Threading; using System.Threading;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
using UnityEngine.UI;
public class DisplayServer : MonoBehaviour public class DisplayServer : MonoBehaviour
{ {
@ -35,6 +36,10 @@ public class DisplayServer : MonoBehaviour
private float sendInterval = 0.05f; // 进度发送间隔(秒) private float sendInterval = 0.05f; // 进度发送间隔(秒)
private float lastSentProgress = 0f; // 记录上次发送的进度 private float lastSentProgress = 0f; // 记录上次发送的进度
[Header("Background Sprites")]
public Sprite textBackgroundSprite; // 有文字时的背景Sprite
public Sprite noTextBackgroundSprite; // 无文字时的背景Sprite
// 脚本启动时调用 // 脚本启动时调用
void Start() void Start()
{ {
@ -167,6 +172,18 @@ public class DisplayServer : MonoBehaviour
isClientDragging = false; // 客户端拖动结束 isClientDragging = false; // 客户端拖动结束
Debug.Log("客户端Slider拖动结束"); Debug.Log("客户端Slider拖动结束");
} }
else if (msg.StartsWith("TextPanel:"))
{
string command = msg.Replace("TextPanel:", "");
SetTextPanelVisibility(command == "Show");
Debug.Log($"处理文字面板消息: {msg}");
}
else if (msg.StartsWith("Background:"))
{
string command = msg.Replace("Background:", "");
SetBackgroundSprite(command == "Text");
Debug.Log($"处理背景消息: {msg}");
}
} }
// 仅当动画播放且客户端未拖动时发送进度,且限制发送频率 // 仅当动画播放且客户端未拖动时发送进度,且限制发送频率
@ -242,6 +259,11 @@ public class DisplayServer : MonoBehaviour
} }
} }
} }
// 初始化文字面板为显示
SetTextPanelVisibility(true);
// 初始化背景为有文字背景
SetBackgroundSprite(true);
Debug.Log($"显示端切换到页面: {pageName}"); Debug.Log($"显示端切换到页面: {pageName}");
} }
@ -292,6 +314,65 @@ public class DisplayServer : MonoBehaviour
} }
} }
// 设置当前页面文字面板的显隐
private void SetTextPanelVisibility(bool isVisible)
{
if (background == null || currentPage == "首页") return;
Transform pageTransform = background.Find(currentPage);
if (pageTransform != null)
{
Transform textPanel = pageTransform.Find("TextPanel");
if (textPanel != null)
{
textPanel.gameObject.SetActive(isVisible);
Debug.Log($"设置页面 {currentPage} 文字面板显隐: {isVisible}");
}
else
{
Debug.LogWarning($"未在页面 {currentPage} 找到TextPanel");
}
}
else
{
Debug.LogWarning($"未找到页面 {currentPage}");
}
}
// 设置当前页面背景的Sprite
private void SetBackgroundSprite(bool hasText)
{
if (background == null || currentPage == "首页") return;
Transform pageTransform = background.Find(currentPage);
if (pageTransform != null)
{
Transform backgroundTransform = pageTransform.Find("PageBackground");
if (backgroundTransform != null)
{
Image backgroundImage = backgroundTransform.GetComponent<Image>();
if (backgroundImage != null)
{
Sprite newSprite = hasText ? textBackgroundSprite : noTextBackgroundSprite;
backgroundImage.sprite = newSprite;
Debug.Log($"设置页面 {currentPage} 背景: {(newSprite != null ? newSprite.name : "null")}");
}
else
{
Debug.LogWarning($"页面 {currentPage} 的PageBackground未找到Image组件");
}
}
else
{
Debug.LogWarning($"未在页面 {currentPage} 找到PageBackground");
}
}
else
{
Debug.LogWarning($"未找到页面 {currentPage}");
}
}
// 处理动画结束事件 // 处理动画结束事件
private void OnModelAnimationFinished() private void OnModelAnimationFinished()
{ {

View File

@ -1,190 +1,79 @@
using UnityEngine; using UnityEngine;
using System.Collections.Generic;
using System;
public class ModelController : MonoBehaviour public class ModelController : MonoBehaviour
{ {
private Animator animator; // 控制动画的Animator组件 private Animator animator; // 用于控制动画
private string currentAnim = ""; // 跟踪当前播放的动画 public delegate void AnimationFinished(); // 动画结束事件
private bool isPlaying = false; // 跟踪动画播放状态 public event AnimationFinished OnAnimationFinished; // 动画结束事件
[Header("默认动画状态名称")] // 脚本启动时调用
public string defaultAnimName = "Take 001"; // 默认动画状态名称 void Start()
private Dictionary<string, int> stateHashes = new Dictionary<string, int>(); // 动画状态哈希缓存
private float lastLoggedProgress = -1f; // 记录上次日志的进度值
private float lastWarningTime = 0f; // 记录上次警告日志时间
private const float warningInterval = 1f; // 警告日志间隔(秒)
// 动画结束事件
public event Action OnAnimationFinished;
// 脚本初始化时调用
void Awake()
{ {
animator = GetComponent<Animator>(); animator = GetComponent<Animator>();
// 缓存默认动画状态的哈希值以提高性能 if (animator == null)
if (!string.IsNullOrEmpty(defaultAnimName))
{ {
stateHashes[defaultAnimName] = Animator.StringToHash(defaultAnimName); Debug.LogError($"模型 {gameObject.name} 未找到Animator组件");
} }
} }
// 在Update中更新动画状态 // 播放动画
void Update()
{
if (isPlaying && animator != null && !string.IsNullOrEmpty(currentAnim))
{
if (!animator.enabled)
{
animator.enabled = true; // 确保Animator启用
Debug.Log($"重新启用Animator: {currentAnim}");
}
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
if (stateInfo.IsName(currentAnim) && stateInfo.normalizedTime >= 1f)
{
// 动画播放完成,暂停并标记
animator.enabled = false;
isPlaying = false;
OnAnimationFinished?.Invoke(); // 通知动画结束
Debug.Log($"动画 {currentAnim} 播放完成,暂停");
}
}
}
/// <summary>
/// 从头播放默认动画
/// </summary>
public void PlayAnimation() public void PlayAnimation()
{ {
if (animator == null || string.IsNullOrEmpty(defaultAnimName)) return; if (animator != null)
if (!AnimatorHasState(defaultAnimName))
{ {
Debug.LogWarning($"Animator上不存在状态: {defaultAnimName}"); animator.Play("Base Layer.AnimationName", 0, 0f); // 替换为实际动画名称
return; Debug.Log($"模型 {gameObject.name} 开始播放动画");
}
} }
currentAnim = defaultAnimName; // 设置动画进度
animator.enabled = true; public void SetAnimationProgress(float progress)
animator.Play(currentAnim, 0, 0f); // 从头播放动画
animator.Update(0f); // 强制立即更新
isPlaying = true; // 标记动画正在播放
Debug.Log($"开始播放动画: {currentAnim}");
}
/// <summary>
/// 设置动画进度0到1
/// </summary>
public void SetAnimationProgress(float normalizedTime)
{ {
if (animator == null || string.IsNullOrEmpty(defaultAnimName)) return; if (animator != null)
if (!gameObject.activeSelf) return;
// 确保currentAnim已设置
if (string.IsNullOrEmpty(currentAnim))
{ {
currentAnim = defaultAnimName; animator.Play("Base Layer.AnimationName", 0, progress); // 替换为实际动画名称
Debug.Log($"设置动画进度前初始化currentAnim: {currentAnim}"); animator.speed = 0f; // 暂停动画以保持进度
Debug.Log($"模型 {gameObject.name} 设置动画进度: {progress:F2}");
}
} }
if (!AnimatorHasState(currentAnim)) // 重置动画
{
Debug.LogWarning($"Animator上不存在状态: {currentAnim}");
return;
}
// 停止播放状态
isPlaying = false;
animator.enabled = true;
float clampedTime = Mathf.Clamp01(normalizedTime);
animator.Play(currentAnim, 0, clampedTime); // 设置动画到指定时间
animator.Update(0f); // 强制立即更新
animator.enabled = false; // 暂停动画
Debug.Log($"设置动画 {currentAnim} 进度: {clampedTime:F2}");
}
/// <summary>
/// 重置动画到初始状态
/// </summary>
public void ResetAnimation() public void ResetAnimation()
{ {
if (animator == null) return; if (animator != null)
if (!gameObject.activeSelf) return; {
animator.Play("Base Layer.AnimationName", 0, 0f); // 替换为实际动画名称
string animToReset = !string.IsNullOrEmpty(defaultAnimName) ? defaultAnimName : ""; animator.speed = 1f; // 恢复正常播放速度
if (string.IsNullOrEmpty(animToReset)) return; Debug.Log($"模型 {gameObject.name} 重置动画");
}
currentAnim = animToReset; // 确保currentAnim已设置
animator.enabled = true;
animator.Play(currentAnim, 0, 0f); // 重置到开始
animator.Update(0f); // 强制立即更新
animator.enabled = false; // 暂停动画
isPlaying = false; // 标记动画暂停
Debug.Log($"重置动画: {currentAnim}");
} }
/// <summary> // 检查动画是否正在播放
/// 获取当前动画的标准化时间0到1 public bool IsPlayingAnimation()
/// </summary>
/// <returns>当前动画进度若无动画则返回0</returns>
public float GetAnimationProgress()
{ {
if (animator == null || !animator.enabled || string.IsNullOrEmpty(currentAnim) || !gameObject.activeSelf) if (animator != null)
{ {
if (Time.time - lastWarningTime >= warningInterval)
{
Debug.LogWarning($"无法获取动画进度: animator={animator}, enabled={animator?.enabled}, currentAnim={currentAnim}, active={gameObject.activeSelf}");
lastWarningTime = Time.time;
}
return 0f;
}
if (!AnimatorHasState(currentAnim))
{
if (Time.time - lastWarningTime >= warningInterval)
{
Debug.LogWarning($"Animator上不存在状态: {currentAnim}");
lastWarningTime = Time.time;
}
return 0f;
}
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0); AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
if (stateInfo.IsName(currentAnim)) return stateInfo.normalizedTime < 1.0f && animator.speed > 0f;
{
float progress = Mathf.Clamp01(stateInfo.normalizedTime % 1f);
// 仅当进度变化超过0.01时记录日志
if (Mathf.Abs(progress - lastLoggedProgress) > 0.01f)
{
Debug.Log($"获取动画 {currentAnim} 进度: {progress:F2}");
lastLoggedProgress = progress;
}
return progress;
}
if (Time.time - lastWarningTime >= warningInterval)
{
Debug.LogWarning($"动画状态不匹配: currentAnim={currentAnim}, state={stateInfo.fullPathHash}");
lastWarningTime = Time.time;
}
return 0f;
}
// 检查指定的动画状态是否存在于Animator中
private bool AnimatorHasState(string stateName)
{
if (stateHashes.TryGetValue(stateName, out int hash))
{
for (int i = 0; i < animator.layerCount; i++)
{
if (animator.HasState(i, hash)) return true;
}
} }
return false; return false;
} }
// 获取动画播放状态 // 获取当前动画进度
public bool IsPlayingAnimation() public float GetAnimationProgress()
{ {
return isPlaying; if (animator != null)
{
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
return Mathf.Clamp01(stateInfo.normalizedTime);
}
return 0f;
}
// 动画结束时调用需在Animator中设置
public void OnAnimationEnd()
{
OnAnimationFinished?.Invoke();
Debug.Log($"模型 {gameObject.name} 动画播放完成");
} }
} }

View File

@ -4,6 +4,7 @@ using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@ -28,6 +29,10 @@ public class TouchClient : MonoBehaviour
private bool isDraggingSlider = false; // 标记是否正在拖动Slider private bool isDraggingSlider = false; // 标记是否正在拖动Slider
private float lastSentProgress = 0f; // 记录最后发送的进度 private float lastSentProgress = 0f; // 记录最后发送的进度
[Header("Text Panel Toggle Sprites")]
public Sprite showSprite; // 显示状态的Sprite
public Sprite hideSprite; // 隐藏状态的Sprite
// 脚本启动时调用 // 脚本启动时调用
void Start() void Start()
{ {
@ -207,6 +212,41 @@ public class TouchClient : MonoBehaviour
Debug.Log("Slider拖动结束"); Debug.Log("Slider拖动结束");
} }
// 文字面板Toggle状态改变时调用
public void OnTextPanelToggleChanged(Toggle toggle)
{
if (toggle == null) return;
bool isTextPanelVisible = toggle.isOn;
Image toggleImage = toggle.graphic as Image; // 使用Toggle的graphic字段
TextMeshProUGUI toggleText = toggle.GetComponentInChildren<TextMeshProUGUI>();
if (toggleImage != null)
{
toggleImage.sprite = isTextPanelVisible ? showSprite : hideSprite;
Debug.Log($"Toggle sprite 切换: {currentPage}, isOn={isTextPanelVisible}, sprite={(isTextPanelVisible ? showSprite : hideSprite).name}");
}
else
{
Debug.LogWarning($"Toggle {toggle.name} 未找到graphic Image组件");
}
if (toggleText != null)
{
toggleText.text = isTextPanelVisible ? "显示文字" : "隐藏文字";
Debug.Log($"Toggle 文本更新: {currentPage}, text={toggleText.text}");
}
else
{
Debug.LogWarning($"Toggle {toggle.name} 未找到TextMeshProUGUI组件");
}
// 发送显隐消息到显示端
string message = isTextPanelVisible ? "TextPanel:Show" : "TextPanel:Hide";
SendMessageToServer(message);
Debug.Log($"文字面板Toggle切换: {message}");
}
// 获取当前页面的Slider组件 // 获取当前页面的Slider组件
private Slider GetCurrentPageSlider() private Slider GetCurrentPageSlider()
{ {
@ -232,6 +272,31 @@ public class TouchClient : MonoBehaviour
return null; return null;
} }
// 获取当前页面的TextPanelToggle组件
private Toggle GetCurrentPageTextPanelToggle()
{
if (background == null || currentPage == "首页") return null;
Transform pageTransform = background.Find(currentPage);
if (pageTransform != null)
{
Toggle toggle = pageTransform.GetComponentInChildren<Toggle>();
if (toggle != null)
{
if (!toggle.interactable)
{
toggle.interactable = true; // 确保Toggle可交互
Debug.Log($"启用TextPanelToggle交互: {currentPage}");
}
return toggle;
}
Debug.LogWarning($"未在页面 {currentPage} 找到TextPanelToggle");
return null;
}
Debug.LogWarning($"未找到页面 {currentPage}");
return null;
}
// 切换激活的UI页面 // 切换激活的UI页面
private void ShowPage(string pageName) private void ShowPage(string pageName)
{ {
@ -264,7 +329,46 @@ public class TouchClient : MonoBehaviour
Debug.Log($"初始化Slider: {pageName}, 值: {slider.value}"); Debug.Log($"初始化Slider: {pageName}, 值: {slider.value}");
} }
Debug.Log($"切换到页面: {pageName}, Slider {(slider != null ? "" : "")}"); // 初始化当前页面的TextPanelToggle
Toggle toggle = GetCurrentPageTextPanelToggle();
if (toggle != null)
{
// 临时禁用OnValueChanged以防止初始化触发
var onValueChanged = toggle.onValueChanged;
toggle.onValueChanged = new Toggle.ToggleEvent();
toggle.isOn = true; // 默认显示文字面板
toggle.interactable = true; // 确保可交互
// 更新Sprite和文本
Image toggleImage = toggle.graphic as Image; // 使用Toggle的graphic字段
TextMeshProUGUI toggleText = toggle.GetComponentInChildren<TextMeshProUGUI>();
if (toggleImage != null)
{
toggleImage.sprite = showSprite;
Debug.Log($"初始化Toggle sprite: {pageName}, sprite={showSprite.name}");
}
else
{
Debug.LogWarning($"Toggle {toggle.name} 未找到graphic Image组件");
}
if (toggleText != null)
{
toggleText.text = "显示文字";
Debug.Log($"初始化Toggle 文本: {pageName}, text={toggleText.text}");
}
else
{
Debug.LogWarning($"Toggle {toggle.name} 未找到TextMeshProUGUI组件");
}
// 恢复OnValueChanged并绑定
toggle.onValueChanged = onValueChanged;
toggle.onValueChanged.RemoveAllListeners();
toggle.onValueChanged.AddListener((value) => OnTextPanelToggleChanged(toggle));
// 发送初始显隐状态
SendMessageToServer("TextPanel:Show");
Debug.Log($"初始化TextPanelToggle: {pageName}, isOn: {toggle.isOn}");
}
Debug.Log($"切换到页面: {pageName}, Slider {(slider != null ? "" : "")}, TextPanelToggle {(toggle != null ? "" : "")}");
} }
// 在主线程中更新Slider进度 // 在主线程中更新Slider进度

View File

@ -12,10 +12,10 @@ EditorUserSettings:
value: 54035756510d5a0c095f0d7414760b4446154b782e7b7063752a1b62e7b5363b value: 54035756510d5a0c095f0d7414760b4446154b782e7b7063752a1b62e7b5363b
flags: 0 flags: 0
RecentlyUsedSceneGuid-2: RecentlyUsedSceneGuid-2:
value: 5303510050530a0a0e58087140210b44474f1a78742973637a2a4560b5b3656d value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a
flags: 0 flags: 0
RecentlyUsedSceneGuid-3: RecentlyUsedSceneGuid-3:
value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a value: 5303510050530a0a0e58087140210b44474f1a78742973637a2a4560b5b3656d
flags: 0 flags: 0
vcSharedLogLevel: vcSharedLogLevel:
value: 0d5e400f0650 value: 0d5e400f0650

View File

@ -99,7 +99,7 @@ MonoBehaviour:
m_MinSize: {x: 300, y: 200} m_MinSize: {x: 300, y: 200}
m_MaxSize: {x: 24288, y: 16192} m_MaxSize: {x: 24288, y: 16192}
vertical: 0 vertical: 0
controlID: 70 controlID: 17
--- !u!114 &5 --- !u!114 &5
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@ -138,7 +138,7 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 890.4 width: 854.4
height: 722.8 height: 722.8
m_MinSize: {x: 201, y: 221} m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021} m_MaxSize: {x: 4001, y: 4021}
@ -167,14 +167,14 @@ MonoBehaviour:
- {fileID: 10} - {fileID: 10}
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 890.4 x: 854.4
y: 0 y: 0
width: 242.40002 width: 278.40002
height: 722.8 height: 722.8
m_MinSize: {x: 100, y: 200} m_MinSize: {x: 100, y: 200}
m_MaxSize: {x: 8096, y: 16192} m_MaxSize: {x: 8096, y: 16192}
vertical: 1 vertical: 1
controlID: 38 controlID: 69
--- !u!114 &8 --- !u!114 &8
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@ -218,7 +218,7 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 242.40002 width: 278.40002
height: 400.8 height: 400.8
m_MinSize: {x: 202, y: 221} m_MinSize: {x: 202, y: 221}
m_MaxSize: {x: 4002, y: 4021} m_MaxSize: {x: 4002, y: 4021}
@ -244,7 +244,7 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 400.8 y: 400.8
width: 242.40002 width: 278.40002
height: 322 height: 322
m_MinSize: {x: 232, y: 271} m_MinSize: {x: 232, y: 271}
m_MaxSize: {x: 10002, y: 10021} m_MaxSize: {x: 10002, y: 10021}
@ -284,7 +284,7 @@ MonoBehaviour:
m_OverlaysVisible: 1 m_OverlaysVisible: 1
m_LockTracker: m_LockTracker:
m_IsLocked: 0 m_IsLocked: 0
m_LastSelectedObjectID: 656666 m_LastSelectedObjectID: 540690
--- !u!114 &12 --- !u!114 &12
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@ -307,8 +307,8 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 73.6 y: 73.6
width: 1186.2 width: 853.4
height: 989.80005 height: 701.8
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
m_LastAppliedPresetName: Default m_LastAppliedPresetName: Default
@ -403,9 +403,9 @@ MonoBehaviour:
e32: 0 e32: 0
e33: 1 e33: 1
m_PreviewAnimator: {fileID: 0} m_PreviewAnimator: {fileID: 0}
m_AnimatorController: {fileID: 9100000, guid: da2d18bdd63eddf4db4344988663132b, type: 2} m_AnimatorController: {fileID: 9100000, guid: c06c13b013fc9334096e1edcfb15e759, type: 2}
m_BreadCrumbs: m_BreadCrumbs:
- m_Target: {fileID: -5493858010228640296, guid: da2d18bdd63eddf4db4344988663132b, type: 2} - m_Target: {fileID: -2230655706508628860, guid: c06c13b013fc9334096e1edcfb15e759, type: 2}
m_ScrollPosition: {x: 0, y: 0} m_ScrollPosition: {x: 0, y: 0}
stateMachineGraph: {fileID: 0} stateMachineGraph: {fileID: 0}
stateMachineGraphGUI: {fileID: 0} stateMachineGraphGUI: {fileID: 0}
@ -480,9 +480,9 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 890.4 x: 854.4
y: 474.4 y: 474.4
width: 240.40002 width: 276.40002
height: 301 height: 301
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
@ -515,7 +515,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: 7c780000 m_SelectedIDs: 7c780000
m_LastClickedID: 30844 m_LastClickedID: 30844
m_ExpandedIDs: 00000000745d0000765d0000785d00007a5d00007c5d00007e5d0000805d0000 m_ExpandedIDs: 000000005cac01005eac010060ac010062ac010064ac010066ac010068ac01006aac01006cac01006eac010070ac0100
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -540,10 +540,10 @@ MonoBehaviour:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_ResourceFile: m_ResourceFile:
m_AssetTreeState: m_AssetTreeState:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 465}
m_SelectedIDs: m_SelectedIDs:
m_LastClickedID: 0 m_LastClickedID: 0
m_ExpandedIDs: ffffffff00000000745d0000765d0000785d00007a5d00007c5d00007e5d0000805d0000 m_ExpandedIDs: ffffffff000000005cac01005eac010060ac010062ac010064ac010066ac010068ac01006aac01006cac01006eac010070ac0100beac0100
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -621,7 +621,7 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 73.6 y: 73.6
width: 889.4 width: 853.4
height: 701.8 height: 701.8
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
@ -864,14 +864,14 @@ MonoBehaviour:
m_OverrideSceneCullingMask: 6917529027641081856 m_OverrideSceneCullingMask: 6917529027641081856
m_SceneIsLit: 1 m_SceneIsLit: 1
m_SceneLighting: 1 m_SceneLighting: 1
m_2DMode: 0 m_2DMode: 1
m_isRotationLocked: 0 m_isRotationLocked: 0
m_PlayAudio: 0 m_PlayAudio: 0
m_AudioPlay: 0 m_AudioPlay: 0
m_Position: m_Position:
m_Target: {x: 1470.8665, y: 599.2432, z: -36.813965} m_Target: {x: 941.18176, y: 582.5733, z: 9.363111}
speed: 2 speed: 2
m_Value: {x: 1470.8665, y: 599.2432, z: -36.813965} m_Value: {x: 917.83325, y: 594.0318, z: 8.957989}
m_RenderMode: 0 m_RenderMode: 0
m_CameraMode: m_CameraMode:
drawMode: 0 drawMode: 0
@ -900,17 +900,17 @@ MonoBehaviour:
m_Size: {x: 0, y: 0} m_Size: {x: 0, y: 0}
yGrid: yGrid:
m_Fade: m_Fade:
m_Target: 1 m_Target: 0
speed: 2 speed: 2
m_Value: 1 m_Value: 0
m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
m_Pivot: {x: 0, y: 0, z: 0} m_Pivot: {x: 0, y: 0, z: 0}
m_Size: {x: 1, y: 1} m_Size: {x: 1, y: 1}
zGrid: zGrid:
m_Fade: m_Fade:
m_Target: 0 m_Target: 1
speed: 2 speed: 2
m_Value: 0 m_Value: 1
m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
m_Pivot: {x: 0, y: 0, z: 0} m_Pivot: {x: 0, y: 0, z: 0}
m_Size: {x: 1, y: 1} m_Size: {x: 1, y: 1}
@ -918,17 +918,17 @@ MonoBehaviour:
m_GridAxis: 1 m_GridAxis: 1
m_gridOpacity: 0.5 m_gridOpacity: 0.5
m_Rotation: m_Rotation:
m_Target: {x: 0.015004154, y: 0.020719247, z: -0.00030632256, w: 0.9996792} m_Target: {x: 0, y: 0, z: 0, w: 1}
speed: 2 speed: 2
m_Value: {x: 0.015004057, y: 0.020719113, z: -0.00030632058, w: 0.9996728} m_Value: {x: 0, y: 0, z: 0, w: 1}
m_Size: m_Size:
m_Target: 987.1142 m_Target: 859.76056
speed: 2 speed: 2
m_Value: 987.1142 m_Value: 900.2728
m_Ortho: m_Ortho:
m_Target: 0 m_Target: 1
speed: 2 speed: 2
m_Value: 0 m_Value: 1
m_CameraSettings: m_CameraSettings:
m_Speed: 0.7662 m_Speed: 0.7662
m_SpeedNormalized: 0.38 m_SpeedNormalized: 0.38
@ -969,9 +969,9 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 890.4 x: 854.4
y: 73.6 y: 73.6
width: 240.40002 width: 276.40002
height: 379.8 height: 379.8
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
@ -980,10 +980,10 @@ MonoBehaviour:
m_OverlaysVisible: 1 m_OverlaysVisible: 1
m_SceneHierarchy: m_SceneHierarchy:
m_TreeViewState: m_TreeViewState:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 5.200012}
m_SelectedIDs: m_SelectedIDs:
m_LastClickedID: 0 m_LastClickedID: 0
m_ExpandedIDs: 9255feffe255feff2857feff7c5afeffcc5afeff165cfeff021ffffff420ffff4821ffff8a22ffff5624ffffc427ffff1428ffff5a29ffffa42cfffff42cffff3a2effffb031ffff0432ffff4e33ffff86f6ffffc2f7ffff12f8ffff54f9ffff08fbffff1271030070c9030022f60700804e080046040a001a070a00ae070a00b6070a00f8070a00 m_ExpandedIDs: 4228ffff08fbffff205900004c59000050590000605900006e590000865900008a59000096590000f2ad0100f6ad010030ae010040ae010014af0100b2af0100b6af0100ecaf010000b001002ab001004cb1010060b1010094b10100
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -1029,7 +1029,7 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 73.6 y: 73.6
width: 889.4 width: 853.4
height: 701.8 height: 701.8
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
@ -1044,7 +1044,7 @@ MonoBehaviour:
m_ShowGizmos: 0 m_ShowGizmos: 0
m_TargetDisplay: 0 m_TargetDisplay: 0
m_ClearColor: {r: 0, g: 0, b: 0, a: 0} m_ClearColor: {r: 0, g: 0, b: 0, a: 0}
m_TargetSize: {x: 3328, y: 1352} m_TargetSize: {x: 1920, y: 1080}
m_TextureFilterMode: 0 m_TextureFilterMode: 0
m_TextureHideFlags: 61 m_TextureHideFlags: 61
m_RenderIMGUI: 1 m_RenderIMGUI: 1
@ -1053,16 +1053,16 @@ MonoBehaviour:
m_VSyncEnabled: 0 m_VSyncEnabled: 0
m_Gizmos: 0 m_Gizmos: 0
m_Stats: 0 m_Stats: 0
m_SelectedSizes: 08000000000000000000000012000000000000000000000000000000000000000000000000000000 m_SelectedSizes: 03000000000000000000000012000000000000000000000000000000000000000000000000000000
m_ZoomArea: m_ZoomArea:
m_HRangeLocked: 0 m_HRangeLocked: 0
m_VRangeLocked: 0 m_VRangeLocked: 0
hZoomLockedByDefault: 0 hZoomLockedByDefault: 0
vZoomLockedByDefault: 0 vZoomLockedByDefault: 0
m_HBaseRangeMin: -1331.2001 m_HBaseRangeMin: -768
m_HBaseRangeMax: 1331.2001 m_HBaseRangeMax: 768
m_VBaseRangeMin: -540.8 m_VBaseRangeMin: -432
m_VBaseRangeMax: 540.8 m_VBaseRangeMax: 432
m_HAllowExceedBaseRangeMin: 1 m_HAllowExceedBaseRangeMin: 1
m_HAllowExceedBaseRangeMax: 1 m_HAllowExceedBaseRangeMax: 1
m_VAllowExceedBaseRangeMin: 1 m_VAllowExceedBaseRangeMin: 1
@ -1071,7 +1071,7 @@ MonoBehaviour:
m_HSlider: 0 m_HSlider: 0
m_VSlider: 0 m_VSlider: 0
m_IgnoreScrollWheelUntilClicked: 0 m_IgnoreScrollWheelUntilClicked: 0
m_EnableMouseInput: 0 m_EnableMouseInput: 1
m_EnableSliderZoomHorizontal: 0 m_EnableSliderZoomHorizontal: 0
m_EnableSliderZoomVertical: 0 m_EnableSliderZoomVertical: 0
m_UniformScale: 1 m_UniformScale: 1
@ -1080,23 +1080,23 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 21 y: 21
width: 889.4 width: 853.4
height: 680.8 height: 680.8
m_Scale: {x: 0.33405948, y: 0.33405948} m_Scale: {x: 0.555599, y: 0.555599}
m_Translation: {x: 444.7, y: 340.4} m_Translation: {x: 426.7, y: 340.4}
m_MarginLeft: 0 m_MarginLeft: 0
m_MarginRight: 0 m_MarginRight: 0
m_MarginTop: 0 m_MarginTop: 0
m_MarginBottom: 0 m_MarginBottom: 0
m_LastShownAreaInsideMargins: m_LastShownAreaInsideMargins:
serializedVersion: 2 serializedVersion: 2
x: -1331.2001 x: -768
y: -1018.9802 y: -612.6721
width: 2662.4001 width: 1536
height: 2037.9604 height: 1225.3442
m_MinimalGUI: 1 m_MinimalGUI: 1
m_defaultScale: 0.33405948 m_defaultScale: 0.555599
m_LastWindowPixelSize: {x: 1111.75, y: 877.25} m_LastWindowPixelSize: {x: 1066.75, y: 877.25}
m_ClearInEditMode: 1 m_ClearInEditMode: 1
m_NoCameraWarning: 1 m_NoCameraWarning: 1
m_LowResolutionForAspectRatios: 00000000000000000000 m_LowResolutionForAspectRatios: 00000000000000000000