1
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f790cbebb7c8c304196143de204f5048
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,227 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 图形验证码生成器:运行时动态生成验证码图片(Texture2D → Sprite),不依赖任何外部图片资源。
|
||||
/// 用法:var sprite = CaptchaGenerator.Generate(width, height, out string code);
|
||||
/// </summary>
|
||||
public static class CaptchaGenerator
|
||||
{
|
||||
// 验证码字符集(去除易混淆字符 0/O/1/I/l)
|
||||
private const string CharSet = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ";
|
||||
|
||||
// 干扰线颜色池
|
||||
private static readonly Color[] NoiseColors =
|
||||
{
|
||||
new Color(0.6f, 0.6f, 0.6f),
|
||||
new Color(0.4f, 0.4f, 0.8f),
|
||||
new Color(0.8f, 0.4f, 0.4f),
|
||||
new Color(0.4f, 0.8f, 0.4f),
|
||||
new Color(0.8f, 0.8f, 0.2f),
|
||||
};
|
||||
|
||||
// 字符颜色池
|
||||
private static readonly Color[] TextColors =
|
||||
{
|
||||
new Color(0.1f, 0.1f, 0.6f),
|
||||
new Color(0.6f, 0.1f, 0.1f),
|
||||
new Color(0.1f, 0.5f, 0.1f),
|
||||
new Color(0.5f, 0.2f, 0.5f),
|
||||
new Color(0.2f, 0.2f, 0.2f),
|
||||
new Color(0.6f, 0.3f, 0.1f),
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 生成验证码图片并转换为 Sprite。
|
||||
/// </summary>
|
||||
/// <param name="width">图片宽度</param>
|
||||
/// <param name="height">图片高度</param>
|
||||
/// <param name="code">输出的验证码文本</param>
|
||||
/// <param name="length">验证码字符数(默认4)</param>
|
||||
/// <returns>验证码 Sprite(可直接赋给 Image)</returns>
|
||||
public static Sprite Generate(int width, int height, out string code, int length = 4)
|
||||
{
|
||||
code = RandomCode(length);
|
||||
var tex = DrawCaptcha(code, width, height);
|
||||
return Sprite.Create(tex, new Rect(0, 0, width, height), new Vector2(0.5f, 0.5f));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生成验证码图片并转换为 Sprite(无 out 参数的便捷重载)。
|
||||
/// </summary>
|
||||
public static Sprite Generate(int width, int height, int length = 4)
|
||||
{
|
||||
return Generate(width, height, out _, length);
|
||||
}
|
||||
|
||||
/// <summary>生成随机验证码文本</summary>
|
||||
private static string RandomCode(int length)
|
||||
{
|
||||
var sb = new StringBuilder(length);
|
||||
for (int i = 0; i < length; i++)
|
||||
sb.Append(CharSet[Random.Range(0, CharSet.Length)]);
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
/// <summary>把验证码画到 Texture2D 上</summary>
|
||||
private static Texture2D DrawCaptcha(string code, int width, int height)
|
||||
{
|
||||
// 半透明背景,方便看清楚字符
|
||||
var bg = new Color(0.95f, 0.95f, 0.95f, 1f);
|
||||
var tex = new Texture2D(width, height, TextureFormat.RGBA32, false);
|
||||
tex.filterMode = FilterMode.Point;
|
||||
|
||||
var pixels = new Color32[width * height];
|
||||
|
||||
// 填充背景
|
||||
for (int i = 0; i < pixels.Length; i++)
|
||||
pixels[i] = bg;
|
||||
|
||||
tex.SetPixels32(pixels);
|
||||
|
||||
// 画干扰线
|
||||
int lineCount = 3 + Random.Range(0, 3); // 3~5 条
|
||||
for (int i = 0; i < lineCount; i++)
|
||||
{
|
||||
var c = NoiseColors[Random.Range(0, NoiseColors.Length)];
|
||||
int x0 = Random.Range(0, width);
|
||||
int y0 = Random.Range(0, height);
|
||||
int x1 = Random.Range(0, width);
|
||||
int y1 = Random.Range(0, height);
|
||||
DrawLine(tex, x0, y0, x1, y1, c);
|
||||
}
|
||||
|
||||
// 画干扰点
|
||||
int dotCount = 30 + Random.Range(0, 30); // 30~59 个
|
||||
for (int i = 0; i < dotCount; i++)
|
||||
{
|
||||
var c = NoiseColors[Random.Range(0, NoiseColors.Length)];
|
||||
int x = Random.Range(0, width);
|
||||
int y = Random.Range(0, height);
|
||||
tex.SetPixel(x, y, c);
|
||||
}
|
||||
|
||||
// 逐个字符绘制(使用内置 8x8 像素字体)
|
||||
int charPixelSize = Mathf.Min(height * 2 / 3, width / (code.Length + 1)); // 字符像素大小
|
||||
int startX = (width - code.Length * charPixelSize) / 2;
|
||||
int startY = (height - charPixelSize) / 2;
|
||||
|
||||
for (int i = 0; i < code.Length; i++)
|
||||
{
|
||||
var c = TextColors[Random.Range(0, TextColors.Length)];
|
||||
int x = startX + i * charPixelSize;
|
||||
// 每个字符的 y 做轻微随机偏移
|
||||
int y = startY + Random.Range(-charPixelSize / 6, charPixelSize / 6);
|
||||
DrawChar(tex, code[i], x, y, charPixelSize, c);
|
||||
}
|
||||
|
||||
tex.Apply();
|
||||
return tex;
|
||||
}
|
||||
|
||||
/// <summary>绘制单条直线(Bresenham)</summary>
|
||||
private static void DrawLine(Texture2D tex, int x0, int y0, int x1, int y1, Color c)
|
||||
{
|
||||
int dx = Mathf.Abs(x1 - x0), sx = x0 < x1 ? 1 : -1;
|
||||
int dy = -Mathf.Abs(y1 - y0), sy = y0 < y1 ? 1 : -1;
|
||||
int err = dx + dy;
|
||||
while (true)
|
||||
{
|
||||
if (x0 >= 0 && x0 < tex.width && y0 >= 0 && y0 < tex.height)
|
||||
tex.SetPixel(x0, y0, c);
|
||||
if (x0 == x1 && y0 == y1) break;
|
||||
int e2 = 2 * err;
|
||||
if (e2 >= dy) { err += dy; x0 += sx; }
|
||||
if (e2 <= dx) { err += dx; y0 += sy; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>用 8x8 像素位图绘制单个字符,可缩放到任意像素大小</summary>
|
||||
private static void DrawChar(Texture2D tex, char ch, int x, int y, int size, Color c)
|
||||
{
|
||||
// 5x7 像素位图(行宽5,行高7)的简单 ASCII 字库
|
||||
bool[,] pattern = GetCharPattern(ch);
|
||||
if (pattern == null) return;
|
||||
|
||||
int pw = pattern.GetLength(0); // 5
|
||||
int ph = pattern.GetLength(1); // 7
|
||||
float sx = size / (float)pw;
|
||||
float sy = size / (float)ph;
|
||||
|
||||
for (int py = 0; py < ph; py++)
|
||||
{
|
||||
for (int px = 0; px < pw; px++)
|
||||
{
|
||||
if (!pattern[px, py]) continue;
|
||||
// 把位图的一个像素映射到 size×size 区域(从下往上画,因为 Texture2D 原点在左下)
|
||||
int xStart = Mathf.RoundToInt(x + px * sx);
|
||||
int xEnd = Mathf.RoundToInt(x + (px + 1) * sx);
|
||||
int yStart = Mathf.RoundToInt(y + (ph - 1 - py) * sy);
|
||||
int yEnd = Mathf.RoundToInt(y + (ph - py) * sy);
|
||||
|
||||
for (int yy = yStart; yy < yEnd; yy++)
|
||||
{
|
||||
for (int xx = xStart; xx < xEnd; xx++)
|
||||
{
|
||||
if (xx >= 0 && xx < tex.width && yy >= 0 && yy < tex.height)
|
||||
tex.SetPixel(xx, yy, c);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 简单的 5x7 像素字库(支持 0-9 A-Z,去掉易混淆字符)。
|
||||
/// 返回 bool[x, y],x=0..4(列),y=0..6(行,从上到下)。
|
||||
/// </summary>
|
||||
private static bool[,] GetCharPattern(char ch)
|
||||
{
|
||||
// 每个字符 7 行,每行 5 个像素(从上到下)
|
||||
// '1' = 亮,'0' = 暗
|
||||
string[] rows;
|
||||
switch (ch)
|
||||
{
|
||||
case '2': rows = new[] { "01110", "10001", "00001", "00010", "00100", "01000", "11111" }; break;
|
||||
case '3': rows = new[] { "01110", "10001", "00001", "00110", "00001", "10001", "01110" }; break;
|
||||
case '4': rows = new[] { "00010", "00110", "01010", "10010", "11111", "00010", "00010" }; break;
|
||||
case '5': rows = new[] { "11111", "10000", "11110", "00001", "00001", "10001", "01110" }; break;
|
||||
case '6': rows = new[] { "00110", "01000", "10000", "11110", "10001", "10001", "01110" }; break;
|
||||
case '7': rows = new[] { "11111", "00001", "00010", "00100", "01000", "01000", "01000" }; break;
|
||||
case '8': rows = new[] { "01110", "10001", "10001", "01110", "10001", "10001", "01110" }; break;
|
||||
case '9': rows = new[] { "01110", "10001", "10001", "01111", "00001", "00010", "01100" }; break;
|
||||
case 'A': rows = new[] { "01110", "10001", "10001", "11111", "10001", "10001", "10001" }; break;
|
||||
case 'B': rows = new[] { "11110", "10001", "10001", "11110", "10001", "10001", "11110" }; break;
|
||||
case 'C': rows = new[] { "01110", "10001", "10000", "10000", "10000", "10001", "01110" }; break;
|
||||
case 'D': rows = new[] { "11110", "10001", "10001", "10001", "10001", "10001", "11110" }; break;
|
||||
case 'E': rows = new[] { "11111", "10000", "10000", "11110", "10000", "10000", "11111" }; break;
|
||||
case 'F': rows = new[] { "11111", "10000", "10000", "11110", "10000", "10000", "10000" }; break;
|
||||
case 'G': rows = new[] { "01110", "10001", "10000", "10111", "10001", "10001", "01110" }; break;
|
||||
case 'H': rows = new[] { "10001", "10001", "10001", "11111", "10001", "10001", "10001" }; break;
|
||||
case 'J': rows = new[] { "00111", "00010", "00010", "00010", "00010", "10010", "01100" }; break;
|
||||
case 'K': rows = new[] { "10001", "10010", "10100", "11000", "10100", "10010", "10001" }; break;
|
||||
case 'L': rows = new[] { "10000", "10000", "10000", "10000", "10000", "10000", "11111" }; break;
|
||||
case 'M': rows = new[] { "10001", "11011", "10101", "10101", "10001", "10001", "10001" }; break;
|
||||
case 'N': rows = new[] { "10001", "11001", "10101", "10011", "10001", "10001", "10001" }; break;
|
||||
case 'P': rows = new[] { "11110", "10001", "10001", "11110", "10000", "10000", "10000" }; break;
|
||||
case 'Q': rows = new[] { "01110", "10001", "10001", "10001", "10101", "10010", "01101" }; break;
|
||||
case 'R': rows = new[] { "11110", "10001", "10001", "11110", "10100", "10010", "10001" }; break;
|
||||
case 'S': rows = new[] { "01111", "10000", "10000", "01110", "00001", "10001", "11110" }; break;
|
||||
case 'T': rows = new[] { "11111", "00100", "00100", "00100", "00100", "00100", "00100" }; break;
|
||||
case 'U': rows = new[] { "10001", "10001", "10001", "10001", "10001", "10001", "01110" }; break;
|
||||
case 'V': rows = new[] { "10001", "10001", "10001", "10001", "10001", "01010", "00100" }; break;
|
||||
case 'W': rows = new[] { "10001", "10001", "10001", "10101", "10101", "11011", "10001" }; break;
|
||||
case 'X': rows = new[] { "10001", "10001", "01010", "00100", "01010", "10001", "10001" }; break;
|
||||
case 'Y': rows = new[] { "10001", "10001", "01010", "00100", "00100", "00100", "00100" }; break;
|
||||
case 'Z': rows = new[] { "11111", "00001", "00010", "00100", "01000", "10000", "11111" }; break;
|
||||
default: return null;
|
||||
}
|
||||
|
||||
var pattern = new bool[5, 7];
|
||||
for (int y = 0; y < 7; y++)
|
||||
for (int x = 0; x < 5; x++)
|
||||
pattern[x, y] = rows[y][x] == '1';
|
||||
return pattern;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1cba60bc00a4a094a88b8147d9c2fdd5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -12,6 +12,8 @@ namespace Assets.MyGame.Scripts.Net
|
||||
{
|
||||
public class WebSocketReponseList
|
||||
{
|
||||
/// <summary>正在加载中的游戏场景 UIPanel 集合,防止房主收到多条 RoomJoinNotice(含人机)时重复创建场景</summary>
|
||||
private static readonly HashSet<UIPanel> _loadingGamePanels = new HashSet<UIPanel>();
|
||||
/// <summary>
|
||||
/// 获取房间列表 room
|
||||
/// </summary>
|
||||
@@ -94,23 +96,34 @@ namespace Assets.MyGame.Scripts.Net
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (UIManager.Instance.Get<GameMainPanel_Base>(uIPanel)==null)
|
||||
if (UIManager.Instance.Get<GameMainPanel_Base>(uIPanel)==null && !_loadingGamePanels.Contains(uIPanel))
|
||||
{
|
||||
UIManager.Instance.ShowAsync(uIPanel, UIPanel.HomeMainPanel, msg);
|
||||
// 卸载所有已加载的游戏地图场景
|
||||
// 标记正在加载,防止房主收到多条 RoomJoinNotice(含人机玩家)时重复创建场景
|
||||
_loadingGamePanels.Add(uIPanel);
|
||||
UIManager.Instance.ShowAsync(uIPanel, UIPanel.HomeMainPanel, msg, (panel) =>
|
||||
{
|
||||
// 面板创建完成,移除加载标记
|
||||
_loadingGamePanels.Remove(uIPanel);
|
||||
});
|
||||
// 卸载所有已加载的游戏地图场景(保证场景唯一性)
|
||||
string[] gameScenes = { "FLZY", "YYSC", "XJMH", "HHWK" };
|
||||
foreach (var sn in gameScenes)
|
||||
{
|
||||
// 不卸载即将加载的目标场景
|
||||
if (sn == sceneName) continue;
|
||||
var s = SceneManager.GetSceneByName(sn);
|
||||
if (s.IsValid() && s.isLoaded)
|
||||
SceneManager.UnloadSceneAsync(sn);
|
||||
}
|
||||
SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
|
||||
// 目标场景已加载则不重复加载
|
||||
var targetScene = SceneManager.GetSceneByName(sceneName);
|
||||
if (!targetScene.IsValid() || !targetScene.isLoaded)
|
||||
SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
|
||||
|
||||
UIManager.Instance.Close(UIPanel.HomeMainPanel);
|
||||
WebSocketManager.Instance.isGame = true;
|
||||
}
|
||||
else
|
||||
else if (UIManager.Instance.Get<GameMainPanel_Base>(uIPanel) != null)
|
||||
{
|
||||
// 面板已存在 → 新玩家加入,转发给现有面板激活座位
|
||||
var panel = UIManager.Instance.Get<GameMainPanel_Base>(uIPanel);
|
||||
@@ -134,6 +147,7 @@ namespace Assets.MyGame.Scripts.Net
|
||||
}
|
||||
}
|
||||
}
|
||||
// else: 场景正在加载中(_loadingGamePanels 含此 uIPanel),忽略本次重复通知
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -304,7 +304,10 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
|
||||
|
||||
UnLoadResources();
|
||||
SceneManager.UnloadSceneAsync(sceneName);
|
||||
// 场景可能未加载或已卸载,做保护避免重复卸载报错
|
||||
var scene = SceneManager.GetSceneByName(sceneName);
|
||||
if (scene.IsValid() && scene.isLoaded)
|
||||
SceneManager.UnloadSceneAsync(sceneName);
|
||||
WebSocketManager.Instance.Close(SocketType.game);
|
||||
|
||||
}
|
||||
|
||||
@@ -85,6 +85,7 @@ public class UIHome_BY_ShopPanel : SubUIBase
|
||||
APIRequestList.GetUser(GameManager.Instance.user.id, (a) =>
|
||||
{
|
||||
GameManager.Instance.UpdataUserData(a);
|
||||
RefreshUI();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -228,6 +229,7 @@ public class UIHome_BY_ShopPanel : SubUIBase
|
||||
APIRequestList.GetUser(GameManager.Instance.user.id, (a) =>
|
||||
{
|
||||
GameManager.Instance.UpdataUserData(a);
|
||||
RefreshUI();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -269,6 +271,7 @@ public class UIHome_BY_ShopPanel : SubUIBase
|
||||
APIRequestList.GetUser(GameManager.Instance.user.id, (a) =>
|
||||
{
|
||||
GameManager.Instance.UpdataUserData(a);
|
||||
RefreshUI();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Assets.MyGame.Scripts.Net;
|
||||
using Assets.MyGame.Scripts.Net;
|
||||
using Assets.MyGame.Scripts.Net.API.GameConfig_SubClass;
|
||||
using Assets.MyGame.Scripts.Net.APIRequest.Objs;
|
||||
using Assets.MyGame.Scripts.Net.APIResponses.HomeMain_User;
|
||||
@@ -208,15 +208,25 @@ public class UIHomeMain : UIBase
|
||||
}
|
||||
public void UpdateUserData()
|
||||
{
|
||||
if (GameManager.Instance?.user?.assets == null) return;
|
||||
|
||||
tMP_GoldCoinNum.text = GameManager.Instance.user.assets.gold.ToString();
|
||||
tMP_DiamondNum.text = GameManager.Instance.user.assets.diamond.ToString();
|
||||
|
||||
userName.text = GameManager.Instance.user.BaseInfo.userName;
|
||||
userID.text = GameManager.Instance.user.BaseInfo.number;
|
||||
img_VIP.sprite = sprite_VIP[GameManager.Instance.user.assets.vipLevel];
|
||||
|
||||
// VIP 图标越界保护:vipLevel 超出列表范围时用最后一个,避免异常中断刷新
|
||||
int vipLevel = GameManager.Instance.user.assets.vipLevel;
|
||||
if (sprite_VIP != null && sprite_VIP.Count > 0 && img_VIP != null)
|
||||
{
|
||||
int idx = Mathf.Clamp(vipLevel, 0, sprite_VIP.Count - 1);
|
||||
img_VIP.sprite = sprite_VIP[idx];
|
||||
}
|
||||
|
||||
RefreshAvatar();
|
||||
RefreshAvatarFrame();
|
||||
img_VIP.SetNativeSize();
|
||||
if (img_VIP != null) img_VIP.SetNativeSize();
|
||||
}
|
||||
|
||||
private void RefreshAvatar()
|
||||
|
||||
@@ -20,6 +20,9 @@ public class RegisterPanel : SubUIBase
|
||||
private string _realQueRenPassword = "";
|
||||
private Coroutine _maskCoroutine, _maskCoroutine2;
|
||||
|
||||
/// <summary>当前验证码(不区分大小写比对)</summary>
|
||||
private string _captchaCode = "";
|
||||
|
||||
public override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
@@ -37,8 +40,25 @@ public class RegisterPanel : SubUIBase
|
||||
tMPInput_QueRenPassword.contentType = TMP_InputField.ContentType.Standard;
|
||||
tMPInput_QueRenPassword.onValueChanged.AddListener(v => OnPwdChanged(v, tMPInput_QueRenPassword, ref _realQueRenPassword, ref _maskCoroutine2));
|
||||
|
||||
// 点击验证码图片刷新
|
||||
if (img_YZM != null)
|
||||
{
|
||||
var yzmBtn = img_YZM.GetComponent<Button>();
|
||||
if (yzmBtn == null) yzmBtn = img_YZM.gameObject.AddComponent<Button>();
|
||||
yzmBtn.onClick.AddListener(RefreshCaptcha);
|
||||
}
|
||||
|
||||
btn_Register.onClick.AddListener(() =>
|
||||
{
|
||||
// 校验验证码(不区分大小写)
|
||||
if (string.IsNullOrEmpty(_captchaCode) ||
|
||||
!string.Equals(tMPInput_YZM.text, _captchaCode, System.StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
UIManager.Instance.ShowBoardError("验证码错误");
|
||||
RefreshCaptcha();
|
||||
return;
|
||||
}
|
||||
|
||||
APIRequestList.Register(new Assets.MyGame.Scripts.Net.APIRequest.Objs.RegisterObj
|
||||
{
|
||||
mobile = tMPInput_UserName.text,
|
||||
@@ -53,6 +73,17 @@ public class RegisterPanel : SubUIBase
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
RefreshCaptcha();
|
||||
}
|
||||
|
||||
/// <summary>生成并显示新的验证码图片</summary>
|
||||
private void RefreshCaptcha()
|
||||
{
|
||||
if (img_YZM == null) return;
|
||||
var sprite = CaptchaGenerator.Generate(160, 60, out _captchaCode, 4);
|
||||
img_YZM.sprite = sprite;
|
||||
if (tMPInput_YZM != null) tMPInput_YZM.text = "";
|
||||
}
|
||||
|
||||
private void OnPwdChanged(string display, TMP_InputField input, ref string real, ref Coroutine cr)
|
||||
|
||||
@@ -1,5 +1,95 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &130878127009665589
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 402500192337834392}
|
||||
- component: {fileID: 6648427320965333739}
|
||||
- component: {fileID: 5162676732187391039}
|
||||
- component: {fileID: 1702240637627174844}
|
||||
m_Layer: 0
|
||||
m_Name: "\u9A8C\u8BC1\u7801\u63D0\u793A\u6846 (1)"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &402500192337834392
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 130878127009665589}
|
||||
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: 8238622764576799807}
|
||||
m_Father: {fileID: 5760332990951854565}
|
||||
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: 206.50009, y: -152.50008}
|
||||
m_SizeDelta: {x: 189, y: 62}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6648427320965333739
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 130878127009665589}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5162676732187391039
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 130878127009665589}
|
||||
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: 1}
|
||||
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: 21300000, guid: aa1c61138c61f7d4f97e514c84efe1d9, type: 3}
|
||||
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 &1702240637627174844
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 130878127009665589}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_ShowMaskGraphic: 1
|
||||
--- !u!1 &371857212190886996
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3003,7 +3093,7 @@ RectTransform:
|
||||
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
|
||||
m_ConstrainProportionsScale: 1
|
||||
m_Children:
|
||||
- {fileID: 8238622764576799807}
|
||||
- {fileID: 402500192337834392}
|
||||
- {fileID: 6788651556310521657}
|
||||
- {fileID: 7742629450309001792}
|
||||
- {fileID: 9121190289241508109}
|
||||
@@ -3215,11 +3305,11 @@ RectTransform:
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5760332990951854565}
|
||||
m_Father: {fileID: 402500192337834392}
|
||||
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: 206.50009, y: -152.50006}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 189, y: 62}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8120169878869360682
|
||||
@@ -3250,7 +3340,7 @@ MonoBehaviour:
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: aa1c61138c61f7d4f97e514c84efe1d9, type: 3}
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
@@ -3816,6 +3906,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
btn_Close: {fileID: 4276198549132994028}
|
||||
uIEffect: 1
|
||||
tMPInput_UserName: {fileID: 4492449882434305716}
|
||||
tMPInput_Password: {fileID: 4410289030012361464}
|
||||
tMPInput_QueRenPassword: {fileID: 8639823229264985157}
|
||||
|
||||
@@ -49,7 +49,7 @@ TextureImporter:
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteBorder: {x: 9, y: 0, z: 9, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
@@ -106,6 +106,19 @@ TextureImporter:
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
@@ -113,7 +126,7 @@ TextureImporter:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
internalID: 1537655665
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
|
||||
@@ -49,7 +49,7 @@ TextureImporter:
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteBorder: {x: 11, y: 0, z: 10, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
@@ -106,6 +106,19 @@ TextureImporter:
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
@@ -113,7 +126,7 @@ TextureImporter:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
internalID: 1537655665
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
|
||||
Reference in New Issue
Block a user