This commit is contained in:
2026-09-13 01:40:32 +08:00
parent f89476a737
commit 177561b78b
164 changed files with 10255 additions and 6527 deletions
@@ -662,7 +662,25 @@ MonoBehaviour:
m_RotationOrder: 4 m_RotationOrder: 4
m_MixOutCurve: m_MixOutCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: [] m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
@@ -806,7 +824,25 @@ MonoBehaviour:
m_BlendOutDuration: -1 m_BlendOutDuration: -1
m_MixInCurve: m_MixInCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: [] m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
@@ -1523,7 +1559,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 15c38f6fa1940124db1ab7f6fe7268d1, type: 3} m_Script: {fileID: 11500000, guid: 15c38f6fa1940124db1ab7f6fe7268d1, type: 3}
m_Name: Signal Emitter m_Name: Signal Emitter
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Time: 38.516666666666666 m_Time: 37.56925170068027
m_Retroactive: 0 m_Retroactive: 0
m_EmitOnce: 0 m_EmitOnce: 0
m_Asset: {fileID: 11400000, guid: 27ead056a3555a449b1c33be851ca0c5, type: 2} m_Asset: {fileID: 11400000, guid: 27ead056a3555a449b1c33be851ca0c5, type: 2}
@@ -24,6 +24,7 @@ MonoBehaviour:
m_Markers: m_Markers:
m_Objects: m_Objects:
- {fileID: 52122530592584653} - {fileID: 52122530592584653}
- {fileID: -3767978809465459993}
--- !u!114 &-8410463078486255931 --- !u!114 &-8410463078486255931
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
@@ -290,6 +291,22 @@ MonoBehaviour:
searchHierarchy: 0 searchHierarchy: 0
active: 1 active: 1
postPlayback: 2 postPlayback: 2
--- !u!114 &-3767978809465459993
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 15c38f6fa1940124db1ab7f6fe7268d1, type: 3}
m_Name: Signal Emitter
m_EditorClassIdentifier:
m_Time: 6.333333333333333
m_Retroactive: 0
m_EmitOnce: 0
m_Asset: {fileID: 0}
--- !u!114 &-3350020437337939349 --- !u!114 &-3350020437337939349
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
@@ -641,17 +641,32 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5e5dca86a57fe2144a34f1f2ddb93962, type: 3} m_Script: {fileID: 11500000, guid: 5e5dca86a57fe2144a34f1f2ddb93962, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
beilv: 0
guid: guid:
lastMoveLineId:
monsterData: monsterData:
die_Score: 0 die_Score: 0
isDie: 0 isDie: 0
fishTypeConfig: fishTypeConfig:
fishNumber: fishNumber:
fishName: fishName:
fishBrief:
fishType: 0 fishType: 0
fishScore: 0 fishScore: 0
killWeight: 0 killWeight: 0
pathList: pathList:
fishImage:
fishMultipleDesc:
moveLine:
bezierCurveData:
name:
start: {x: 0, y: 0}
controlPoints: []
end: {x: 0, y: 0}
moveTime: 0
moveSpeed: 0
cachedCamera: {fileID: 0}
cachedUirootRect: {fileID: 0}
skeleton: {fileID: 0} skeleton: {fileID: 0}
isSpine: 1 isSpine: 1
fishTypeID: 13003 fishTypeID: 13003
@@ -659,6 +674,7 @@ MonoBehaviour:
HP: 5 HP: 5
effect_Die: {fileID: 0} effect_Die: {fileID: 0}
effect_DieAward: {fileID: 0} effect_DieAward: {fileID: 0}
currEffect_DieAward: {fileID: 0}
isMove: 1 isMove: 1
is3D: 0 is3D: 0
forwordXYZ: X forwordXYZ: X
@@ -666,7 +682,20 @@ MonoBehaviour:
moveTime: 0 moveTime: 0
isyz: 0 isyz: 0
yzID: yzID:
colliderList: []
lockPoint: {fileID: 0}
bingDongEffect: []
needLockEvent: 0
createVideoClip: {fileID: 0}
rotationPY: 60
useMirrorCompensate: 1
baseMmove: 0
isRotate: 1 isRotate: 1
isNot1: 0
ischild0: 0
depthOffset: 0
is2DFish: 0
sortOrder2D: 0
--- !u!1 &1709867586078768 --- !u!1 &1709867586078768
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -866,17 +866,32 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5e5dca86a57fe2144a34f1f2ddb93962, type: 3} m_Script: {fileID: 11500000, guid: 5e5dca86a57fe2144a34f1f2ddb93962, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
beilv: 0
guid: guid:
lastMoveLineId:
monsterData: monsterData:
die_Score: 0 die_Score: 0
isDie: 0 isDie: 0
fishTypeConfig: fishTypeConfig:
fishNumber: fishNumber:
fishName: fishName:
fishBrief:
fishType: 0 fishType: 0
fishScore: 0 fishScore: 0
killWeight: 0 killWeight: 0
pathList: pathList:
fishImage:
fishMultipleDesc:
moveLine:
bezierCurveData:
name:
start: {x: 0, y: 0}
controlPoints: []
end: {x: 0, y: 0}
moveTime: 0
moveSpeed: 0
cachedCamera: {fileID: 0}
cachedUirootRect: {fileID: 0}
skeleton: {fileID: 0} skeleton: {fileID: 0}
isSpine: 1 isSpine: 1
fishTypeID: 13006 fishTypeID: 13006
@@ -884,6 +899,7 @@ MonoBehaviour:
HP: 5 HP: 5
effect_Die: {fileID: 0} effect_Die: {fileID: 0}
effect_DieAward: {fileID: 0} effect_DieAward: {fileID: 0}
currEffect_DieAward: {fileID: 0}
isMove: 1 isMove: 1
is3D: 0 is3D: 0
forwordXYZ: X forwordXYZ: X
@@ -891,7 +907,20 @@ MonoBehaviour:
moveTime: 0 moveTime: 0
isyz: 0 isyz: 0
yzID: yzID:
colliderList: []
lockPoint: {fileID: 0}
bingDongEffect: []
needLockEvent: 0
createVideoClip: {fileID: 0}
rotationPY: 60
useMirrorCompensate: 1
baseMmove: 0
isRotate: 1 isRotate: 1
isNot1: 0
ischild0: 0
depthOffset: 0
is2DFish: 0
sortOrder2D: 0
--- !u!1 &1709867586078768 --- !u!1 &1709867586078768
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
+1 -1
View File
@@ -4311,9 +4311,9 @@ RectTransform:
m_LocalScale: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1159290238}
- {fileID: 1819495571} - {fileID: 1819495571}
- {fileID: 3182697403238626235} - {fileID: 3182697403238626235}
- {fileID: 1159290238}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
@@ -76,9 +76,12 @@ public class RoomPlayerInfo
/// <summary>玩家 ID</summary> /// <summary>玩家 ID</summary>
public string userId; public string userId;
/// <summary>玩家昵称</summary> /// <summary>玩家名字</summary>
public string userName; public string userName;
/// <summary>玩家编号(短ID,游戏内显示用)</summary>
public string userNumber;
/// <summary>头像 URL</summary> /// <summary>头像 URL</summary>
public string avatar; public string avatar;
@@ -1,100 +1,116 @@
using Assets.MyGame.Scripts.Net.WebResponses;
using System; using System;
using System.Collections.Generic;
namespace Assets.MyGame.Scripts.Net.WebResponses namespace Assets.MyGame.Scripts.Net.WebResponses
{ {
/// <summary> /// <summary>
/// 房间进入通知(RoomJoinNotice) /// 房间进入通知(RoomJoinNotice)—— 后端新版玩家数据
/// </summary> /// </summary>
[Serializable] [Serializable]
public class RoomJoinNotice public class RoomJoinNotice
{ {
/// <summary> /// <summary>
/// 玩家唯一 ID /// 玩家Id
/// </summary> /// </summary>
public string userId; public string UserId { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 玩家昵称 /// 玩家名字
/// </summary> /// </summary>
public string userName; public string UserName { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 玩家头像 URL /// 玩家编号(短ID,游戏内显示用)
/// </summary> /// </summary>
public string avatar; public string UserNumber { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 是否红名(可能用于标识特殊玩家) /// 玩家头像
/// </summary> /// </summary>
public bool isRedName; public string Avatar { get; set; } = string.Empty;
/// <summary> /// <summary>
/// VIP 等级 /// 玩家是否红名
/// </summary> /// </summary>
public int vipLevel; public bool IsRedName { get; set; } = false;
/// <summary> /// <summary>
/// 玩家卡牌等级(可能用于展示) /// 玩家等级
/// </summary> /// </summary>
public int userCardLevel; public int Level { get; set; } = 0;
/// <summary> /// <summary>
/// 玩家唯一客户端 ID(可能用于房间定位) /// Vip等级
/// </summary> /// </summary>
public string cId; public int VipLevel { get; set; } = 0;
/// <summary>
/// 玩家CID
/// </summary>
public string CId { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 玩家金币 /// 玩家金币
/// </summary> /// </summary>
public long gold; public long Gold { get; set; } = 0;
/// <summary> /// <summary>
/// 玩家钻石 /// 玩家钻石
/// </summary> /// </summary>
public long diamond; public int Diamond { get; set; } = 0;
/// <summary> /// <summary>
/// 玩家在房间中的位置(1~4) /// 玩家位置
/// </summary> /// </summary>
public int position; public int Position { get; set; } = 0;
/// <summary> /// <summary>
/// 当前使用的炮台编号 /// 炮台
/// </summary> /// </summary>
public string cannonId; public string CannonId { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 当前使用的翅膀编号 /// 翅膀
/// </summary> /// </summary>
public string wingsId; public string WingsId { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 当前使用的战神编号 /// 战神
/// </summary> /// </summary>
public string warGodId; public string WarGodId { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 当前炮倍(例如 1000、2000) /// 炮倍
/// </summary> /// </summary>
public int cannonMultiple; public int CannonMultiple { get; set; } = 1;
/// <summary> /// <summary>
/// 进入房间时的金币(用于统计) /// 进场金币
/// </summary> /// </summary>
public long beginCoin; public long BeginCoin { get; set; } = 0;
/// <summary> /// <summary>
/// 进入房间的时间戳(秒) /// 进房后达到的最高金币
/// </summary> /// </summary>
public long beginTime; public long MaxGold { get; set; } = 0;
/// <summary> /// <summary>
/// 玩家状态(0 正常,其他状态可扩展) /// 进场时间
/// </summary> /// </summary>
public int state; public long BeginTime { get; set; } = 0;
/// <summary>是否为机器人(后端下发)</summary> /// <summary>
public bool isBot; /// 状态 0 正常 1 断线中
/// </summary>
public int State { get; set; } = 0;
/// <summary>
/// 是否为机器人
/// </summary>
public bool IsBot { get; set; } = false;
/// <summary>
/// 是否挂机中
/// </summary>
public bool IsAfk { get; set; } = false;
} }
} }
@@ -261,6 +261,7 @@ namespace Assets.MyGame.Scripts.Net
case "GameEnd": case "GameEnd":
{ {
if (roomMainPanel != null) roomMainPanel.StopWaitCountdown(); // 游戏结束停走棋倒计时
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0]; var va = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0];
string winUserId = va["winUserId"]?.ToString(); string winUserId = va["winUserId"]?.ToString();
if (string.IsNullOrEmpty(winUserId)) if (string.IsNullOrEmpty(winUserId))
@@ -303,9 +304,8 @@ namespace Assets.MyGame.Scripts.Net
case "SyncGameData": case "SyncGameData":
{ {
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0]; // 象棋走棋帧同步数据:后端只透传,交给主面板解析处理
string data = va["data"]?.ToString(); if (roomMainPanel != null) roomMainPanel.OnChessNetData(msg);
Debug.Log("[Chess] 同步数据: " + data);
} }
break; break;
@@ -62,9 +62,9 @@ namespace Assets.MyGame.Scripts.Net
{ {
var notice = JsonConvert.DeserializeObject<WebSocketResponseBase<RoomJoinNotice>>(msg).arguments[0]; var notice = JsonConvert.DeserializeObject<WebSocketResponseBase<RoomJoinNotice>>(msg).arguments[0];
string myId = GameManager.Instance.user?.id; string myId = GameManager.Instance.user?.id;
if (!string.IsNullOrEmpty(myId) && notice.userId == myId) if (!string.IsNullOrEmpty(myId) && notice.UserId == myId)
{ {
GameManager.LogGoldFlowReceiveGain("RoomJoinNotice", $"推送金币={notice.gold} 钻石={notice.diamond} 炮台消耗={notice.cannonMultiple} 座位={notice.position}"); GameManager.LogGoldFlowReceiveGain("RoomJoinNotice", $"推送金币={notice.Gold} 钻石={notice.Diamond} 炮台消耗={notice.CannonMultiple} 座位={notice.Position}");
} }
} }
catch { } catch { }
@@ -139,15 +139,15 @@ namespace Assets.MyGame.Scripts.Net
{ {
var notice = v.arguments[0]; var notice = v.arguments[0];
// 如果座位被bot占用则替换 // 如果座位被bot占用则替换
var targetSit = fishPanel.list_Sits.Find(s => s.posID == notice.position); var targetSit = fishPanel.list_Sits.Find(s => s.posID == notice.Position);
if (targetSit != null && targetSit.isBot) if (targetSit != null && targetSit.isBot)
{ {
targetSit.isBot = false; targetSit.isBot = false;
targetSit.ShowWaiting(); targetSit.ShowWaiting();
} }
fishPanel.JoinGame(notice.position, notice.gold, notice.diamond, notice.cannonMultiple, 0, notice.userId, notice.cannonId, notice.wingsId, notice.warGodId); fishPanel.JoinGame(notice.Position, notice.Gold, notice.Diamond, notice.CannonMultiple, 0, notice.UserId, notice.CannonId, notice.WingsId, notice.WarGodId);
// 后端动态加入的机器人也要标记 // 后端动态加入的机器人也要标记
if (targetSit != null && !string.IsNullOrEmpty(notice.userId) && notice.userId.StartsWith("bot_")) if (targetSit != null && !string.IsNullOrEmpty(notice.UserId) && notice.UserId.StartsWith("bot_"))
targetSit.isBot = true; targetSit.isBot = true;
} }
} }
@@ -1,4 +1,4 @@
using Assets.MyGame.Scripts.Net; using Assets.MyGame.Scripts.Net;
using Assets.MyGame.Scripts.Net.WebResponses.ChineseChess; using Assets.MyGame.Scripts.Net.WebResponses.ChineseChess;
using Newtonsoft.Json; using Newtonsoft.Json;
@@ -62,6 +62,8 @@ public partial class WebSocketSendList
} }
public static void SyncGameDataChineseChess(string gameId, string data) public static void SyncGameDataChineseChess(string gameId, string data)
{ {
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"SyncGameData\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\",\"" + data + "\"]}"); // data 是 JSON 字符串(象棋走子帧数据),必须整体转义后再嵌入外层报文,否则引号会破坏 JSON
string escaped = data == null ? "\"\"" : JsonConvert.SerializeObject(data);
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"SyncGameData\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\"," + escaped + "]}");
} }
} }
+25 -7
View File
@@ -973,19 +973,26 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
/// 数据来自服务端下发的 RoomInfo.players / RoomJoinNotice): /// 数据来自服务端下发的 RoomInfo.players / RoomJoinNotice):
/// 玩家ID、昵称、头像、VIP 图标(0~10 级一一对应)、VIP 等级背景(每两级一个)。 /// 玩家ID、昵称、头像、VIP 图标(0~10 级一一对应)、VIP 等级背景(每两级一个)。
/// </summary> /// </summary>
/// <param name="userId">玩家唯一 ID(显示在 tmp_UserNumber)</param> /// <param name="userId">玩家唯一 ID(用于判断是否本人)</param>
/// <param name="userName">玩家昵称(显示在 tmp_UserName)</param> /// <param name="userName">玩家昵称(显示在 tmp_UserName)</param>
/// <param name="avatar">头像名/URL(走 GameManager 头像缓存,找不到回退默认头像)</param> /// <param name="avatar">头像名/URL(走 GameManager 头像缓存,找不到回退默认头像)</param>
/// <param name="vipLevel">VIP 等级 0~10</param> /// <param name="vipLevel">VIP 等级 0~10</param>
public void SetUserInfo(string userId, string userName, string avatar, int vipLevel) /// <param name="userNumber">玩家编号(短ID,显示在 tmp_UserNumber;空则回退显示 userId)</param>
public void SetUserInfo(string userId, string userName, string avatar, int vipLevel, string userNumber = null)
{ {
// 玩家 ID // 玩家 ID:优先显示后端下发的短编号 UserNumber,没有再用 userId
if (tmp_UserNumber != null && !string.IsNullOrEmpty(userId)) if (tmp_UserNumber != null)
tmp_UserNumber.text = userId; {
string displayId = string.IsNullOrEmpty(userNumber) ? userId : userNumber;
if (!string.IsNullOrEmpty(displayId))
tmp_UserNumber.text = displayId;
}
// 昵称 // 昵称:非本人的名字打码(前2后2保留,中间***),自己原样显示
if (tmp_UserName != null && !string.IsNullOrEmpty(userName)) if (tmp_UserName != null && !string.IsNullOrEmpty(userName))
tmp_UserName.text = userName; tmp_UserName.text = userId == GameManager.Instance?.user?.id
? userName
: MaskUserName(userName);
// 头像:优先 GameManager 头像缓存(Resources/Avatar),查不到用默认头像 // 头像:优先 GameManager 头像缓存(Resources/Avatar),查不到用默认头像
if (img_Head != null) if (img_Head != null)
@@ -1018,6 +1025,17 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
} }
} }
/// <summary>
/// 非本人昵称打码:保留前 2 位和后 2 位,中间用 *** 代替。
/// 例:123456789 → 12***89;12345 → 12***45。不足 5 位原样显示。
/// </summary>
private static string MaskUserName(string name)
{
if (string.IsNullOrEmpty(name) || name.Length < 5)
return name;
return name.Substring(0, 1) + "***" + name.Substring(name.Length - 1);
}
#region 表情包显示(spineObj / ziObj) #region 表情包显示(spineObj / ziObj)
/// <summary>表情显示时长(秒),超时自动隐藏</summary> /// <summary>表情显示时长(秒),超时自动隐藏</summary>
@@ -416,7 +416,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 124.7} m_AnchoredPosition: {x: 0, y: 88.6}
m_SizeDelta: {x: 150, y: 139} m_SizeDelta: {x: 150, y: 139}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5270299543555156791 --- !u!222 &5270299543555156791
@@ -447,7 +447,7 @@ MonoBehaviour:
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
m_Sprite: {fileID: 21300000, guid: 5b31886d5bcd88f41affc8104222893f, type: 3} m_Sprite: {fileID: 21300000, guid: 835b61b6f33236b408b6039f602c21b7, type: 3}
m_Type: 0 m_Type: 0
m_PreserveAspect: 0 m_PreserveAspect: 0
m_FillCenter: 1 m_FillCenter: 1
@@ -8430,7 +8430,7 @@ PrefabInstance:
- target: {fileID: 5485079200766063859, guid: 965597318af75eb4b9f2af433facf3d4, - target: {fileID: 5485079200766063859, guid: 965597318af75eb4b9f2af433facf3d4,
type: 3} type: 3}
propertyPath: m_IsActive propertyPath: m_IsActive
value: 1 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
@@ -4126,6 +4126,12 @@ PrefabInstance:
insertIndex: -1 insertIndex: -1
addedObject: {fileID: 6427896563708412520} addedObject: {fileID: 6427896563708412520}
m_SourcePrefab: {fileID: 100100000, guid: 8eea6c1a6ddb0eb479afc35eb58efc97, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 8eea6c1a6ddb0eb479afc35eb58efc97, type: 3}
--- !u!1 &305017329864058515 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 43175906713270589, guid: 8eea6c1a6ddb0eb479afc35eb58efc97,
type: 3}
m_PrefabInstance: {fileID: 334049117776732078}
m_PrefabAsset: {fileID: 0}
--- !u!1 &5119560591553211127 stripped --- !u!1 &5119560591553211127 stripped
GameObject: GameObject:
m_CorrespondingSourceObject: {fileID: 4876996923753723225, guid: 8eea6c1a6ddb0eb479afc35eb58efc97, m_CorrespondingSourceObject: {fileID: 4876996923753723225, guid: 8eea6c1a6ddb0eb479afc35eb58efc97,
@@ -4173,7 +4179,7 @@ MonoBehaviour:
isEffEnd: 0 isEffEnd: 0
isScoreStart: 0 isScoreStart: 0
isGoldEffectStart: 0 isGoldEffectStart: 0
mod: {fileID: 0} mod: {fileID: 305017329864058515}
--- !u!1 &5455853164041459123 stripped --- !u!1 &5455853164041459123 stripped
GameObject: GameObject:
m_CorrespondingSourceObject: {fileID: 5698692268160748061, guid: 8eea6c1a6ddb0eb479afc35eb58efc97, m_CorrespondingSourceObject: {fileID: 5698692268160748061, guid: 8eea6c1a6ddb0eb479afc35eb58efc97,
@@ -117,7 +117,7 @@ PrefabInstance:
type: 3} type: 3}
propertyPath: m_Sprite propertyPath: m_Sprite
value: value:
objectReference: {fileID: -2085821068, guid: 68e4fec764425b4438eb6a06c7b99c16, objectReference: {fileID: 1246215499, guid: 68e4fec764425b4438eb6a06c7b99c16,
type: 3} type: 3}
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303, - target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3} type: 3}
@@ -147,7 +147,7 @@ PrefabInstance:
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303, - target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3} type: 3}
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: 180 value: 77
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 5627438144398829183, guid: a96966a1d55149a4f83724f224013303, - target: {fileID: 5627438144398829183, guid: a96966a1d55149a4f83724f224013303,
type: 3} type: 3}
@@ -29,7 +29,7 @@ public class YGLGDieEvent : BJRedPacketEvent
private IEnumerator ScrollTo(int target, Action onComplete) private IEnumerator ScrollTo(int target, Action onComplete)
{ {
int from = currScore; int from = currScore;
float duration = 5f; float duration = 3f;
float elapsed = 0f; float elapsed = 0f;
float coinInterval = 0.12f; float coinInterval = 0.12f;
float nextCoinTime = 0f; float nextCoinTime = 0f;
@@ -117,7 +117,7 @@ PrefabInstance:
type: 3} type: 3}
propertyPath: m_Sprite propertyPath: m_Sprite
value: value:
objectReference: {fileID: -835389033, guid: 68e4fec764425b4438eb6a06c7b99c16, objectReference: {fileID: -511180246, guid: 68e4fec764425b4438eb6a06c7b99c16,
type: 3} type: 3}
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303, - target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3} type: 3}
@@ -117,7 +117,7 @@ PrefabInstance:
type: 3} type: 3}
propertyPath: m_Sprite propertyPath: m_Sprite
value: value:
objectReference: {fileID: -835389033, guid: 68e4fec764425b4438eb6a06c7b99c16, objectReference: {fileID: 126247453, guid: 68e4fec764425b4438eb6a06c7b99c16,
type: 3} type: 3}
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303, - target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3} type: 3}
File diff suppressed because it is too large Load Diff
@@ -3526,6 +3526,21 @@ PrefabInstance:
propertyPath: m_Layer propertyPath: m_Layer
value: 10 value: 10
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 3603314851026112076, guid: 0fb8f3919645bc946bca0af33bdeea70,
type: 3}
propertyPath: m_LocalRotation.w
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3603314851026112076, guid: 0fb8f3919645bc946bca0af33bdeea70,
type: 3}
propertyPath: m_LocalRotation.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3603314851026112076, guid: 0fb8f3919645bc946bca0af33bdeea70,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 180
objectReference: {fileID: 0}
- target: {fileID: 3606933170008871548, guid: 0fb8f3919645bc946bca0af33bdeea70, - target: {fileID: 3606933170008871548, guid: 0fb8f3919645bc946bca0af33bdeea70,
type: 3} type: 3}
propertyPath: m_Layer propertyPath: m_Layer
@@ -11,7 +11,7 @@ PrefabInstance:
- target: {fileID: 236781439713602893, guid: a96966a1d55149a4f83724f224013303, - target: {fileID: 236781439713602893, guid: a96966a1d55149a4f83724f224013303,
type: 3} type: 3}
propertyPath: m_Name propertyPath: m_Name
value: UI_baojiang Variant value: UI_baojiang Variant 11
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303, - target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
type: 3} type: 3}
@@ -113,6 +113,42 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2278261232015200288, guid: a96966a1d55149a4f83724f224013303,
type: 3}
propertyPath: m_Sprite
value:
objectReference: {fileID: 21300000, guid: edc1137651685c04995987764c6ef1f7,
type: 2}
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3}
propertyPath: m_SizeDelta.x
value: 376
objectReference: {fileID: 0}
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3}
propertyPath: m_SizeDelta.y
value: 319
objectReference: {fileID: 0}
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3}
propertyPath: m_LocalScale.x
value: 2.3643734
objectReference: {fileID: 0}
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3}
propertyPath: m_LocalScale.y
value: 2.3643734
objectReference: {fileID: 0}
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3}
propertyPath: m_LocalScale.z
value: 2.3643734
objectReference: {fileID: 0}
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 166
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
@@ -240,6 +240,46 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: -0 value: -0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4632457200066912, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalRotation.w
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4632457200066912, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalRotation.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4632457200066912, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4632457200066912, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4632457200066912, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 180
objectReference: {fileID: 0}
- target: {fileID: 4632457200066912, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 180
objectReference: {fileID: 0}
- target: {fileID: 4634108722742392, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4634108722742392, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4634108722742392, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4634108722742392, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: m_RemovedComponents:
- {fileID: 114621510681728303, guid: d4f11eaa7570f9c44b093687263b450f, type: 3} - {fileID: 114621510681728303, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
- {fileID: 135518489005915545, guid: d4f11eaa7570f9c44b093687263b450f, type: 3} - {fileID: 135518489005915545, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
@@ -639,19 +679,23 @@ MonoBehaviour:
currEffect_DieAward: {fileID: 0} currEffect_DieAward: {fileID: 0}
isMove: 1 isMove: 1
is3D: 0 is3D: 0
forwordXYZ: -Z forwordXYZ: Z
fishenum: 0 fishenum: 0
moveTime: 0 moveTime: 0
isyz: 0 isyz: 0
yzID: yzID:
colliderList: [] colliderList: []
lockPoint: {fileID: 5461717199468334793} lockPoint: {fileID: 5461717199468334793}
bingDongEffect: {fileID: 0} bingDongEffect:
- {fileID: 0}
needLockEvent: 0 needLockEvent: 0
createVideoClip: {fileID: 0} createVideoClip: {fileID: 0}
rotationPY: 80 rotationPY: 80
useMirrorCompensate: 1
baseMmove: 0 baseMmove: 0
isRotate: 1 isRotate: 1
isNot1: 0 isNot1: 0
ischild0: 1 ischild0: 1
depthOffset: -850 depthOffset: -850
is2DFish: 0
sortOrder2D: 0
@@ -45,30 +45,32 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
bjEndUI: {fileID: 0} bjEndUI: {fileID: 0}
useScorePanel: 1 bjEndUIOffsetY: 150
tMP_Score: {fileID: 0}
scorePanelPrefab: {fileID: 0}
currScore: 0
maxScore: 0
scoreCount: 0
posID: 0 posID: 0
paoBei: 0 paoBei: 0
fishScore: 0 fishScore: 0
bJbeishu: 0 bJbeishu: 0
maxScore: 0
startOffset: {x: 0, y: 0, z: -100}
isSelf: 0
isScoreEnd: 0
useScorePanel: 0
tMP_Score: {fileID: 0}
scorePanelPrefab: {fileID: 0}
currScore: 0
scoreCount: 0
bigPrizeFishMode: 0
showDelay: 3 showDelay: 3
moveDuration: 0.5 moveDuration: 0.5
moveEase: 6 moveEase: 6
startOffset: {x: 0, y: 0, z: -100}
bjEndUIOffsetY: 150
coinFlyDuration: 0.5 coinFlyDuration: 0.5
coinArrivalInterval: 0.1 coinArrivalInterval: 0.1
isSelf: 0 showAddScoreFX: 1
autoFinishOnScoreFull: 1 autoFinishOnScoreFull: 1
totalBJCount: 0 totalBJCount: 0
currBJCount: 0 currBJCount: 0
isEffEnd: 0 isEffEnd: 0
isScoreStart: 0 isScoreStart: 0
isScoreEnd: 0
isGoldEffectStart: 0 isGoldEffectStart: 0
baoJiangMode: 0 baoJiangMode: 0
endUIType: 1 endUIType: 1
@@ -88,16 +90,21 @@ MonoBehaviour:
dieEffectTesyNum: 0 dieEffectTesyNum: 0
minBJCount: 10 minBJCount: 10
maxBJCount: 15 maxBJCount: 15
laserPrefab: {fileID: 0}
laserLengthCorrect: 1
lightningMaterial: {fileID: 2100000, guid: a023113e8eb8bf245b8ba10c3e9788d1, type: 2} lightningMaterial: {fileID: 2100000, guid: a023113e8eb8bf245b8ba10c3e9788d1, type: 2}
lightningColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} lightningColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1}
lightningWidth: 0.08 lightningWidth: 0.08
zigzagSegments: 6 zigzagSegments: 6
zigzagJitter: 0.5 zigzagJitter: 0.5
flickerRate: 12
explosionPrefab: {fileID: 1709254077376921, guid: 08be47e4b1d3e1c4a895269c2c08653c, explosionPrefab: {fileID: 1709254077376921, guid: 08be47e4b1d3e1c4a895269c2c08653c,
type: 3} type: 3}
explosionRadius: 10 explosionRadius: 10
hitFxPrefab: {fileID: 0}
lightningCount: 5 lightningCount: 5
lightningRange: 5 circleRange: 3
fillRange: 0
lightningWait: 0.5 lightningWait: 0.5
killDelay: 0.3 killDelay: 0.3
fishLayer: fishLayer:
@@ -284,35 +284,32 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
bjEndUI: {fileID: -8120521337631753117, guid: 24beb697c2a6de5468bbfc86bdf3a918, bjEndUI: {fileID: -8120521337631753117, guid: 24beb697c2a6de5468bbfc86bdf3a918,
type: 3} type: 3}
useScorePanel: 1 bjEndUIOffsetY: 150
tMP_Score: {fileID: 0}
scorePanelPrefab: {fileID: 0}
currScore: 0
maxScore: 0
scoreCount: 0
posID: 0 posID: 0
paoBei: 0 paoBei: 0
fishScore: 0 fishScore: 0
bJbeishu: 0 bJbeishu: 0
maxScore: 0
startOffset: {x: 0, y: 0, z: -100}
isSelf: 0
isScoreEnd: 0
useScorePanel: 0
tMP_Score: {fileID: 0}
scorePanelPrefab: {fileID: 0}
currScore: 0
scoreCount: 0
bigPrizeFishMode: 0
showDelay: 3 showDelay: 3
moveDuration: 0.5 moveDuration: 0.5
moveEase: 6 moveEase: 6
startOffset: {x: 0, y: 0, z: -100}
bjEndUIOffsetY: 150
coinFlyDuration: 0.5 coinFlyDuration: 0.5
coinArrivalInterval: 0.1 coinArrivalInterval: 0.1
isSelf: 0 showAddScoreFX: 1
autoFinishOnScoreFull: 1 autoFinishOnScoreFull: 1
totalBJCount: 0 totalBJCount: 0
currBJCount: 0 currBJCount: 0
isEffEnd: 0 isEffEnd: 0
isScoreStart: 0 isScoreStart: 0
isScoreEnd: 0
isGoldEffectStart: 0 isGoldEffectStart: 0
explosionRadius: 5
fishLayer:
serializedVersion: 2
m_Bits: 0
explosionDelay: 0.5
explosionDuration: 2
explosionCenter: {x: 0, y: 0, z: 0} explosionCenter: {x: 0, y: 0, z: 0}
baoJiItemCount: 30
@@ -886,9 +886,9 @@ RectTransform:
m_Father: {fileID: 8031883748199427146} m_Father: {fileID: 8031883748199427146}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: -0.49072266, y: -262.72168} m_AnchoredPosition: {x: -0.49072266, y: 112.27832}
m_SizeDelta: {x: -79.6833, y: -700.8773} m_SizeDelta: {x: -79.6833, y: 49.12268}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5611486403026417207 --- !u!222 &5611486403026417207
CanvasRenderer: CanvasRenderer:
@@ -1,5 +1,160 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:unity3d.com,2011: %TAG !u! tag:unity3d.com,2011:
--- !u!1 &125206822854412785
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6392373564129328243}
- component: {fileID: 1065876367236267521}
- component: {fileID: 5290092168513550006}
- component: {fileID: 2141871406713982016}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6392373564129328243
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 125206822854412785}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 5.705655}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2747341826554260929}
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: -51.759155, y: 251.07983}
m_SizeDelta: {x: 60, y: 60}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1065876367236267521
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 125206822854412785}
m_CullTransparentMesh: 1
--- !u!114 &5290092168513550006
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 125206822854412785}
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: 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 &2141871406713982016
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 125206822854412785}
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: 5290092168513550006}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &410539498292643559
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2062513398397270554}
m_Layer: 0
m_Name: start
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2062513398397270554
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410539498292643559}
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: 1650206161006120839}
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: -267.8, y: -3.1}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &428869252117790975 --- !u!1 &428869252117790975
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -17,7 +172,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &1755596749695405114 --- !u!224 &1755596749695405114
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -672,6 +827,7 @@ RectTransform:
- {fileID: 551837965639396177} - {fileID: 551837965639396177}
- {fileID: 4852173693812700946} - {fileID: 4852173693812700946}
- {fileID: 6605999270105133777} - {fileID: 6605999270105133777}
- {fileID: 2747341826554260929}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
@@ -748,6 +904,7 @@ MonoBehaviour:
tmp_CoinCount_Top: {fileID: 5805709281203068529} tmp_CoinCount_Top: {fileID: 5805709281203068529}
tmp_WaitTime_Top: {fileID: 7342989625873532498} tmp_WaitTime_Top: {fileID: 7342989625873532498}
img_Title_Top: {fileID: 5212885171862005544} img_Title_Top: {fileID: 5212885171862005544}
chessBoard: {fileID: 1568158661184407560}
skeletonGraphic: {fileID: 2515020745373521213} skeletonGraphic: {fileID: 2515020745373521213}
skineName_JinXingZhong: jrz skineName_JinXingZhong: jrz
skineName_KaiShi: ks skineName_KaiShi: ks
@@ -2517,6 +2674,38 @@ MonoBehaviour:
m_FillOrigin: 0 m_FillOrigin: 0
m_UseSpriteMesh: 0 m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1 m_PixelsPerUnitMultiplier: 1
--- !u!1 &7559696001170718660
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2747341826554260929}
m_Layer: 0
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &2747341826554260929
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7559696001170718660}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 101.759186, y: -201.07983, z: -5.705655}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6392373564129328243}
m_Father: {fileID: 2713217087351076567}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7794285192166842006 --- !u!1 &7794285192166842006
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -2528,8 +2717,9 @@ GameObject:
- component: {fileID: 1650206161006120839} - component: {fileID: 1650206161006120839}
- component: {fileID: 1879959141934861467} - component: {fileID: 1879959141934861467}
- component: {fileID: 3183306154905010273} - component: {fileID: 3183306154905010273}
- component: {fileID: 1568158661184407560}
m_Layer: 0 m_Layer: 0
m_Name: "\u670B\u5BA2\u6E38\u620F" m_Name: ChessBoard
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@@ -2546,7 +2736,9 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children:
- {fileID: 3121338166189145531}
- {fileID: 2062513398397270554}
m_Father: {fileID: 2713217087351076567} m_Father: {fileID: 2713217087351076567}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
@@ -2592,6 +2784,92 @@ MonoBehaviour:
m_FillOrigin: 0 m_FillOrigin: 0
m_UseSpriteMesh: 0 m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1 m_PixelsPerUnitMultiplier: 1
--- !u!114 &1568158661184407560
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7794285192166842006}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 223dd72793f90b243a81f10d13afda56, type: 3}
m_Name:
m_EditorClassIdentifier:
point_Start: {fileID: 2062513398397270554}
point_End: {fileID: 3121338166189145531}
img_Board: {fileID: 3183306154905010273}
draw_BoardLines: 1
prefab_Piece: {fileID: 125206822854412785}
prefab_Cell: {fileID: 0}
sprite_RedPieces:
- {fileID: 21300000, guid: 74aa68ddfe726a64eaae41e9698b9dc5, type: 3}
- {fileID: 21300000, guid: 995b97cc64f6d5541bfa374957ab0b96, type: 3}
- {fileID: 21300000, guid: 8350afd2b074f884f9d72252ef81cfc9, type: 3}
- {fileID: 21300000, guid: a049a9929b74a0841a97b0528f917b9a, type: 3}
- {fileID: 21300000, guid: ce6a7b638b7f8434ba28ed76aba0243b, type: 3}
- {fileID: 21300000, guid: 545769dba244abf4ea0e17e6fe536302, type: 3}
- {fileID: 21300000, guid: ff21c6db7f58b8440b6a408128d141bf, type: 3}
sprite_BlackPieces:
- {fileID: 21300000, guid: fb088f476f754414ca609df46af3f35d, type: 3}
- {fileID: 21300000, guid: b3087b407d4d9e24c88a4cc7a1171cb8, type: 3}
- {fileID: 21300000, guid: 2e4606e92e5ee394aa75847e8ede0d14, type: 3}
- {fileID: 21300000, guid: af0e0ab60ec4fd040bed05c3fbecc3f5, type: 3}
- {fileID: 21300000, guid: 0e566efffec368f4aa13b8680bd0fd07, type: 3}
- {fileID: 21300000, guid: aedf529cde0a46843b121f9361b8794b, type: 3}
- {fileID: 21300000, guid: 75494ddcdfe976542bc8875e3d66a37e, type: 3}
pieceScale: 0.92
sprite_LastFromMark: {fileID: 21300016, guid: 1b142012a72db0d41a9f63afbeccb5c8,
type: 3}
sprite_LastToMark: {fileID: 21300032, guid: 1b142012a72db0d41a9f63afbeccb5c8, type: 3}
lastMarkScale: 0.85
sprite_HintDot: {fileID: 21300012, guid: 1b142012a72db0d41a9f63afbeccb5c8, type: 3}
selectMarkScale: 1
show_DebugPoints: 1
sprite_PieceBg: {fileID: 21300000, guid: 27bc0b59ac2895d479eb92f497deab45, type: 3}
font_Piece: {fileID: 11400000, guid: 5d4a713fdd931db4c9ce49f068b54e0a, type: 2}
color_RedText: {r: 0.7764706, g: 0.15686275, b: 0.15686275, a: 1}
color_BlackText: {r: 0.12941177, g: 0.12941177, b: 0.12941177, a: 1}
tr_Lines: {fileID: 0}
tr_Cells: {fileID: 0}
tr_UnderMarks: {fileID: 0}
tr_Pieces: {fileID: 0}
tr_Marks: {fileID: 0}
--- !u!1 &7794397196396407390
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3121338166189145531}
m_Layer: 0
m_Name: end
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3121338166189145531
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7794397196396407390}
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: 1650206161006120839}
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: -267.8, y: 64.3}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &8038616329731275413 --- !u!1 &8038616329731275413
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2177a7b189de42a4e837f5e419cd3475
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,752 @@
using DG.Tweening;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 棋盘控件(挂在 ChineseChessMainPanel 下)
///
/// 定位方案(配合自备棋盘底图):
/// 1. 自备棋盘底图:作为本物体的子物体摆好(拖到 img_Board,可选)
/// 2. 建两个空物体作定位点,精确摆到底图交叉点上:
/// point_Start:楚河汉界【下方】的左上角交叉点(红方河沿最左侧,逻辑 (0,4))
/// point_End :楚河汉界【上方】的左下角交叉点(与起始点同列、隔河相邻,逻辑 (0,5))
/// 3. 两点距离 = 网格间距;代码从起始点出发生成全部 90 个定位点
/// 4. 黑方视角:逻辑坐标镜像映射(我方棋子永远在下方),底图不用转
///
/// 棋子:
/// - prefab_Piece:只放 Image + Button 的预制体(不加任何脚本,脚本由代码动态添加)
/// - sprite_RedPieces / sprite_BlackPieces:拖展示图,顺序:将/帅、士/仕、象/相、马、车、炮、兵/卒
/// - 都不配则代码生成默认棋子(米色圆 + 汉字)
///
/// 调试:show_DebugPoints = true 生成 90 个半透明小点,用于校准定位点与底图对齐
/// </summary>
public class UIChessBoard : MonoBehaviour
{
[Header("棋盘定位(必填)")]
public RectTransform point_Start; // 起始定位点:楚河汉界下方左上角交叉点(红方河沿最左)
public RectTransform point_End; // 间距定位点:楚河汉界上方左下角交叉点(与起始点同列隔河)
public Image img_Board; // 棋盘底图(自摆拖入;不填且 draw_BoardLines 开启时代码画线)
public bool draw_BoardLines = true; // 无底图时代码绘制棋盘线(有底图自动忽略)
[Header("棋子/格子预制体(只放 Image + Button,脚本由代码动态添加)")]
public GameObject prefab_Piece;
public GameObject prefab_Cell; // 可选:格子预制体
[Header("棋子展示图(顺序:将/帅 士/仕 象/相 马 车 炮 兵/卒)")]
public Sprite[] sprite_RedPieces;
public Sprite[] sprite_BlackPieces;
[Range(0.5f, 1.5f)] public float pieceScale = 0.92f; // 棋子直径 = 网格间距 × pieceScale
[Header("上一步历史标记图(仅显示上一位玩家的起点/终点,不填用半透明方块)")]
public Sprite sprite_LastFromMark; // 起点标记图
public Sprite sprite_LastToMark; // 终点标记图
[Range(0.3f, 1.5f)] public float lastMarkScale = 0.85f; // 标记大小 = 格距 × 此值
[Header("选中标记图(点击自己棋子时显示在棋子下面)")]
public Sprite sprite_HintDot; // 点击选中的棋子下面显示的图(沿用原字段名,之前拖的图自动关联)
[Range(0.3f, 1.5f)] public float selectMarkScale = 1.0f; // 标记大小 = 格距 × 此值
[Header("调试")]
public bool show_DebugPoints = false; // 显示 90 个定位点小圆点(校准底图对齐用)
[Header("无展示图时的默认样式")]
public Sprite sprite_PieceBg; // 棋子底图(默认:代码生成的米色圆)
public TMP_FontAsset font_Piece; // 棋子文字字体(默认:TMP 默认字体)
public Color color_RedText = new Color32(0xC6, 0x28, 0x28, 0xFF);
public Color color_BlackText = new Color32(0x21, 0x21, 0x21, 0xFF);
[Header("运行时自动生成(不用拖)")]
public RectTransform tr_Lines; // 棋盘线层(仅无底图时用)
public RectTransform tr_Cells; // 格子层(90 个定位点)
public RectTransform tr_UnderMarks; // 选中标记层(在棋子下面)
public RectTransform tr_Pieces; // 棋子层
public RectTransform tr_Marks; // 提示层(上一步标记/提示文字)
/// <summary>解析后的字体(font_Piece 或 TMP 默认字体)</summary>
public TMP_FontAsset ResolvedFont { get; private set; }
// 格子缓存:按逻辑坐标存 [y,x]
private UIChessCell[,] cells = new UIChessCell[ChessConst.BoardHeight, ChessConst.BoardWidth];
// 棋子缓存:pieceId → 控件
private readonly Dictionary<int, UIChessPiece> pieceMap = new Dictionary<int, UIChessPiece>();
private ChessGameManager gameManager;
private ChessCamp myCamp;
private bool flipped; // 我方为黑方时,逻辑坐标镜像映射(我方永远在下方)
private UIChessPiece selectedPiece;
private readonly List<Vector2Int> selectedMoves = new List<Vector2Int>();
private RectTransform lastFromMark;
private RectTransform lastToMark;
private Image img_SelectMark; // 选中标记(点击棋子时显示在棋子下面)
private TextMeshProUGUI tmp_Toast;
private Tween toastTween;
// ---- 定位计算结果 ----
private bool gridValid; // 定位点是否有效
private Vector2 gridStart; // 起始点在格层本地坐标(逻辑 (0,4))
private Vector2 gridUp; // 逻辑 y+ 方向(指向黑方)
private Vector2 gridRight; // 逻辑 x+ 方向(红方视角从左到右)
private float cellStep; // 网格间距(两定位点距离)
private float gridAngle; // 网格旋转角(底图正摆时为 0)
private float pieceSize; // 棋子直径
private bool interactable = true;
/// <summary>
/// 初始化棋盘(每次开一局调用一次)
/// </summary>
public void Init(ChessGameManager manager, ChessCamp camp)
{
Clear();
gameManager = manager;
myCamp = camp;
flipped = camp == ChessCamp.Black;
ResolvedFont = font_Piece != null ? font_Piece : TMP_Settings.defaultFontAsset;
if (ResolvedFont == null)
Debug.LogWarning("[UIChessBoard] 未找到可用 TMP 字体,棋子文字可能无法显示,请在 Inspector 给 font_Piece 拖入中文字体");
BuildContainers();
CalcGridFromPoints(); // ★ 两定位点 → 间距 + 方向
BuildCells(); // ★ 90 个棋盘定位点
if (img_Board == null && draw_BoardLines) BuildBoardLines(); // 无底图时才代码画线
BuildPieces(); // ★ 全部棋子(预制体优先,脚本动态添加)
if (show_DebugPoints) BuildDebugPoints();
BuildToast();
// 订阅数据层事件 → 表现层
gameManager.OnMoveApplied += OnChessMoveApplied;
gameManager.OnUndoApplied += OnChessUndoApplied;
gameManager.OnGameOver += OnChessGameOver;
gameManager.OnTurnChanged += OnTurnChanged;
SetInteractable(true);
if (gridValid) ShowToast(myCamp == ChessCamp.Red ? "红方先行" : "对方先行");
}
/// <summary>清空棋盘(对局结束/面板隐藏时调用,Init 内部也会先调一次保证可重入)</summary>
public void Clear()
{
if (gameManager != null)
{
gameManager.OnMoveApplied -= OnChessMoveApplied;
gameManager.OnUndoApplied -= OnChessUndoApplied;
gameManager.OnGameOver -= OnChessGameOver;
gameManager.OnTurnChanged -= OnTurnChanged;
gameManager = null;
}
ClearSelection();
selectedPiece = null;
selectedMoves.Clear();
HideLastMoveMark();
if (tr_Lines != null) { Destroy(tr_Lines.gameObject); tr_Lines = null; }
if (tr_Cells != null) { Destroy(tr_Cells.gameObject); tr_Cells = null; }
if (tr_UnderMarks != null) { Destroy(tr_UnderMarks.gameObject); tr_UnderMarks = null; }
if (tr_Pieces != null) { Destroy(tr_Pieces.gameObject); tr_Pieces = null; }
if (tr_Marks != null) { Destroy(tr_Marks.gameObject); tr_Marks = null; }
lastFromMark = null;
lastToMark = null;
img_SelectMark = null;
tmp_Toast = null;
toastTween?.Kill();
toastTween = null;
pieceMap.Clear();
cells = new UIChessCell[ChessConst.BoardHeight, ChessConst.BoardWidth];
gridValid = false;
cellStep = 0f;
interactable = true;
}
// ================= 资源取用(供棋子控件访问) =================
/// <summary>取某方某类型棋子的展示图(未配置返回 null)</summary>
public Sprite GetTypeSprite(ChessCamp camp, ChessPieceType type)
{
var arr = camp == ChessCamp.Red ? sprite_RedPieces : sprite_BlackPieces;
int idx = (int)type - 1; // ChessPieceType:Jiang=1 Shi=2 Xiang=3 Ma=4 Ju=5 Pao=6 Bing=7
if (arr == null || idx < 0 || idx >= arr.Length) return null;
return arr[idx];
}
/// <summary>取某方棋子文字颜色</summary>
public Color GetTextColor(ChessCamp camp)
{
return camp == ChessCamp.Red ? color_RedText : color_BlackText;
}
// ================= 定位计算(核心) =================
/// <summary>
/// 由两个定位点计算网格:间距 = 两点距离,方向 = 起点→终点 为 y+(指向黑方)
/// </summary>
private void CalcGridFromPoints()
{
if (point_Start == null || point_End == null)
{
Debug.LogError("[UIChessBoard] 未配置定位点 point_Start / point_End!\n" +
"摆法:楚河汉界下方左上角交叉点 = point_Start;上方左下角交叉点 = point_End(两点同列隔河)");
return;
}
Vector2 s = ToBoardLocal(point_Start);
Vector2 e = ToBoardLocal(point_End);
Vector2 delta = e - s;
cellStep = delta.magnitude;
if (cellStep < 1f)
{
Debug.LogError("[UIChessBoard] 两个定位点重合或距离过近(间距=" + cellStep + "),请检查摆放");
return;
}
gridStart = s;
gridUp = delta.normalized; // 逻辑 y+ 方向(起点→终点,指向黑方)
gridRight = new Vector2(gridUp.y, -gridUp.x); // 逻辑 x+ 方向(红方视角从左到右)
gridAngle = Mathf.Atan2(gridUp.y, gridUp.x) * Mathf.Rad2Deg - 90f;
pieceSize = cellStep * pieceScale;
gridValid = true;
Debug.Log($"[UIChessBoard] 定位成功:网格间距={cellStep:F2},起点=({s.x:F1}, {s.y:F1})," +
$"将生成 90 个定位点 + 32 个棋子(棋子直径={pieceSize:F1})");
}
/// <summary>任意 Transform → 格层本地坐标(与格子/棋子的 anchoredPosition 同一坐标系)</summary>
private Vector2 ToBoardLocal(Transform t)
{
return (Vector2)tr_Cells.InverseTransformPoint(t.position);
}
/// <summary>物理网格坐标:从起始点(逻辑 0,4)出发按间距推算</summary>
private Vector2 PhysicalPos(int x, int y)
{
return gridStart + gridRight * (x * cellStep) + gridUp * ((y - 4) * cellStep);
}
/// <summary>逻辑坐标 → 棋盘位置(黑方视角镜像:我方永远在下方)</summary>
private Vector2 GetPos(int x, int y)
{
if (flipped)
{
x = ChessConst.BoardWidth - 1 - x;
y = ChessConst.BoardHeight - 1 - y;
}
return PhysicalPos(x, y);
}
private Vector2 GetPos(Vector2Int p)
{
return GetPos(p.x, p.y);
}
// ================= 父子层级 =================
/// <summary>生成容器层:线 → 格子 → 选中标记 → 棋子 → 提示</summary>
private void BuildContainers()
{
tr_Lines = CreateLayer("Lines");
tr_Cells = CreateLayer("Cells");
tr_UnderMarks = CreateLayer("UnderMarks");
tr_Pieces = CreateLayer("Pieces");
tr_Marks = CreateLayer("Marks");
}
private RectTransform CreateLayer(string name)
{
var go = new GameObject(name, typeof(RectTransform));
var rt = go.GetComponent<RectTransform>();
rt.SetParent(transform, false);
rt.anchorMin = Vector2.zero;
rt.anchorMax = Vector2.one;
rt.offsetMin = Vector2.zero;
rt.offsetMax = Vector2.zero;
rt.pivot = new Vector2(0.5f, 0.5f);
return rt;
}
// ================= 90 个棋盘定位点 =================
/// <summary>按定位点生成全部格子(透明点击区 + 走子提示),支持拖格子预制体</summary>
private void BuildCells()
{
if (!gridValid) return;
for (int y = 0; y < ChessConst.BoardHeight; y++)
{
for (int x = 0; x < ChessConst.BoardWidth; x++)
{
GameObject go;
if (prefab_Cell != null)
{
go = Instantiate(prefab_Cell, tr_Cells);
if (go.GetComponent<RectTransform>() == null)
{
Debug.LogError("[UIChessBoard] 格子预制体根节点必须是 UI 物体(带 RectTransform)");
Destroy(go);
continue;
}
}
else
{
go = new GameObject("Cell", typeof(RectTransform), typeof(Image), typeof(Button));
go.GetComponent<Image>().color = new Color(1f, 1f, 1f, 0f); // 透明热区
}
var crt = (RectTransform)go.transform;
if (crt.parent != tr_Cells) crt.SetParent(tr_Cells, false);
crt.anchoredPosition = GetPos(x, y);
crt.sizeDelta = new Vector2(cellStep, cellStep);
crt.localEulerAngles = new Vector3(0f, 0f, gridAngle);
var cell = go.GetComponent<UIChessCell>();
if (cell == null) cell = go.AddComponent<UIChessCell>();
cell.Init(this, new Vector2Int(x, y), cellStep);
cells[y, x] = cell;
}
}
}
/// <summary>显示 90 个定位点小圆点(校准底图对齐用)</summary>
private void BuildDebugPoints()
{
Sprite dot = ChessArtFactory.GetDotSprite();
for (int y = 0; y < ChessConst.BoardHeight; y++)
{
for (int x = 0; x < ChessConst.BoardWidth; x++)
{
var go = new GameObject("DebugPoint_" + x + "_" + y, typeof(RectTransform), typeof(Image));
var rt = (RectTransform)go.transform;
rt.SetParent(tr_Marks, false);
rt.anchoredPosition = PhysicalPos(x, y);
rt.sizeDelta = new Vector2(cellStep * 0.16f, cellStep * 0.16f);
var img = go.GetComponent<Image>();
img.sprite = dot;
img.color = new Color(0f, 0.75f, 1f, 0.55f);
img.raycastTarget = false;
}
}
Debug.Log("[UIChessBoard] 已显示 90 个定位点(蓝色小点),确认与底图对齐后关闭 show_DebugPoints");
}
// ================= 无底图时的代码绘线(可忽略) =================
/// <summary>自备底图时不调用;无底图时代码绘制棋盘线(横线/竖线/河界断开/九宫/楚河汉界)</summary>
private void BuildBoardLines()
{
if (!gridValid) return;
Color lineColor = new Color32(0x5B, 0x3A, 0x1E, 0xFF);
float thickness = Mathf.Max(2f, cellStep * 0.015f);
// 棋盘底色
var brt = (RectTransform)transform;
var bgGo = new GameObject("BoardBg", typeof(RectTransform), typeof(Image));
var bgRt = (RectTransform)bgGo.transform;
bgRt.SetParent(tr_Lines, false);
bgRt.anchorMin = bgRt.anchorMax = new Vector2(0.5f, 0.5f);
bgRt.anchoredPosition = Vector2.zero;
bgRt.sizeDelta = new Vector2(brt.rect.width, brt.rect.height);
var bgImg = bgGo.GetComponent<Image>();
bgImg.color = new Color32(0xE9, 0xC5, 0x8C, 0xFF);
bgImg.raycastTarget = false;
// 10 条横线
for (int y = 0; y < ChessConst.BoardHeight; y++)
DrawLine(PhysicalPos(0, y), PhysicalPos(8, y), thickness, lineColor);
// 9 条竖线(中间 7 列在河界处断开)
for (int x = 0; x < ChessConst.BoardWidth; x++)
{
if (x == 0 || x == 8)
{
DrawLine(PhysicalPos(x, 9), PhysicalPos(x, 0), thickness, lineColor);
}
else
{
DrawLine(PhysicalPos(x, 9), PhysicalPos(x, 5), thickness, lineColor);
DrawLine(PhysicalPos(x, 4), PhysicalPos(x, 0), thickness, lineColor);
}
}
// 九宫斜线
DrawLine(PhysicalPos(3, 0), PhysicalPos(5, 2), thickness, lineColor);
DrawLine(PhysicalPos(5, 0), PhysicalPos(3, 2), thickness, lineColor);
DrawLine(PhysicalPos(3, 7), PhysicalPos(5, 9), thickness, lineColor);
DrawLine(PhysicalPos(5, 7), PhysicalPos(3, 9), thickness, lineColor);
// 楚河 汉界
float riverY = (PhysicalPos(0, 4).y + PhysicalPos(0, 5).y) * 0.5f;
CreateBoardText("楚河", new Vector2(PhysicalPos(2, 0).x, riverY), cellStep * 0.55f, lineColor);
CreateBoardText("汉界", new Vector2(PhysicalPos(6, 0).x, riverY), cellStep * 0.55f, lineColor);
}
private void DrawLine(Vector2 a, Vector2 b, float thickness, Color color)
{
Vector2 dir = b - a;
float len = dir.magnitude;
if (len < 0.001f) return;
float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
var go = new GameObject("Line", typeof(RectTransform), typeof(Image));
var rt = (RectTransform)go.transform;
rt.SetParent(tr_Lines, false);
rt.localEulerAngles = new Vector3(0, 0, angle);
rt.sizeDelta = new Vector2(len + thickness, thickness);
rt.anchoredPosition = (a + b) * 0.5f;
var img = go.GetComponent<Image>();
img.color = color;
img.raycastTarget = false;
}
private void CreateBoardText(string text, Vector2 pos, float fontSize, Color color)
{
if (ResolvedFont == null) return;
var go = new GameObject("Text_" + text, typeof(RectTransform));
var rt = (RectTransform)go.transform;
rt.SetParent(tr_Lines, false);
rt.anchorMin = rt.anchorMax = new Vector2(0.5f, 0.5f);
rt.anchoredPosition = pos;
rt.sizeDelta = new Vector2(cellStep * 3f, fontSize * 1.8f);
var t = go.AddComponent<TextMeshProUGUI>();
t.font = ResolvedFont;
t.text = text;
t.fontSize = fontSize;
t.alignment = TextAlignmentOptions.Center;
t.color = color;
t.raycastTarget = false;
}
// ================= 棋子生成 =================
/// <summary>
/// 按棋盘数据生成全部存活棋子:
/// 有 prefab_Piece(只带 Image + Button)→ 实例化后动态加 UIChessPiece;
/// 没有 → 代码生成默认棋子(米色圆 + 汉字)
/// </summary>
private void BuildPieces()
{
ClearPieces();
if (!gridValid) return;
foreach (var pd in gameManager.board.allPieces)
{
if (!pd.isAlive) continue;
GameObject go;
if (prefab_Piece != null)
{
go = Instantiate(prefab_Piece, tr_Pieces);
if (go.GetComponent<RectTransform>() == null)
{
Debug.LogError("[UIChessBoard] 棋子预制体根节点必须是 UI 物体(带 RectTransform)");
Destroy(go);
continue;
}
}
else
{
go = new GameObject("Piece", typeof(RectTransform), typeof(Image), typeof(Button));
}
var prt = (RectTransform)go.transform;
if (prt.parent != tr_Pieces) prt.SetParent(tr_Pieces, false);
prt.sizeDelta = new Vector2(pieceSize, pieceSize);
prt.anchoredPosition = GetPos(pd.pos);
prt.localEulerAngles = new Vector3(0f, 0f, gridAngle);
// 预制体上没有任何脚本,这里动态添加
var piece = go.GetComponent<UIChessPiece>();
if (piece == null) piece = go.AddComponent<UIChessPiece>();
if (prefab_Piece == null) SetupDefaultPieceVisual(piece); // 代码生成时补默认子物体
piece.Init(this, pd);
pieceMap[pd.id] = piece;
}
}
/// <summary>代码生成棋子时的默认子物体(选中圈 + 汉字)</summary>
private void SetupDefaultPieceVisual(UIChessPiece piece)
{
var go = piece.gameObject;
// 选中圈
var sgo = new GameObject("SelectRing", typeof(RectTransform), typeof(Image));
var srt = (RectTransform)sgo.transform;
srt.SetParent(go.transform, false);
srt.anchorMin = srt.anchorMax = new Vector2(0.5f, 0.5f);
srt.anchoredPosition = Vector2.zero;
srt.sizeDelta = new Vector2(pieceSize * 1.30f, pieceSize * 1.30f);
var simg = sgo.GetComponent<Image>();
simg.sprite = ChessArtFactory.GetRingSprite();
simg.color = new Color(1f, 0.84f, 0.31f, 0.95f);
simg.raycastTarget = false;
sgo.SetActive(false);
piece.img_Select = simg;
// 汉字
if (ResolvedFont != null)
{
var tgo = new GameObject("Label", typeof(RectTransform));
var trt = (RectTransform)tgo.transform;
trt.SetParent(go.transform, false);
trt.anchorMin = Vector2.zero;
trt.anchorMax = Vector2.one;
trt.offsetMin = Vector2.zero;
trt.offsetMax = Vector2.zero;
var t = tgo.AddComponent<TextMeshProUGUI>();
t.font = ResolvedFont;
t.alignment = TextAlignmentOptions.Center;
t.enableAutoSizing = true;
t.fontSizeMin = 8f;
t.fontSizeMax = Mathf.Max(10f, pieceSize * 0.55f);
piece.tmp_Label = t;
}
}
private void ClearPieces()
{
foreach (var kv in pieceMap)
if (kv.Value != null) Destroy(kv.Value.gameObject);
pieceMap.Clear();
}
/// <summary>悔棋后全量刷新棋子(按数据层状态重建,最可靠)</summary>
public void RefreshAllPieces()
{
ClearSelection();
selectedPiece = null;
BuildPieces();
HideLastMoveMark();
}
private void BuildToast()
{
var go = new GameObject("Toast", typeof(RectTransform));
var rt = (RectTransform)go.transform;
rt.SetParent(tr_Marks, false);
rt.anchorMin = rt.anchorMax = new Vector2(0.5f, 0.5f);
rt.anchoredPosition = new Vector2(0f, cellStep * 2.2f);
rt.sizeDelta = new Vector2(cellStep * 9f, cellStep * 1.2f);
tmp_Toast = go.AddComponent<TextMeshProUGUI>();
if (ResolvedFont != null) tmp_Toast.font = ResolvedFont;
tmp_Toast.alignment = TextAlignmentOptions.Center;
tmp_Toast.fontSize = cellStep * 0.50f;
tmp_Toast.color = new Color(0.80f, 0.16f, 0.12f, 1f);
tmp_Toast.raycastTarget = false;
go.SetActive(false);
}
// ================= 点击交互 =================
public void OnPieceClicked(UIChessPiece piece)
{
if (!interactable || gameManager == null || gameManager.isGameOver) return;
if (piece == null || piece.data == null) return;
if (piece.data.camp == myCamp)
{
// 点自己的子:选中并显示走点
if (!gameManager.IsMyTurn)
{
ShowToast("还没轮到你走棋");
return;
}
if (selectedPiece == piece)
{
ClearSelection();
return;
}
SelectPiece(piece);
}
else
{
// 点对方的子:若它在当前选中子的合法落点里 → 吃子
if (selectedPiece != null && selectedMoves.Contains(piece.data.pos))
{
gameManager.TryLocalMove(selectedPiece.data.pos, piece.data.pos);
}
ClearSelection();
}
}
public void OnCellClicked(UIChessCell cell)
{
if (!interactable || gameManager == null || gameManager.isGameOver) return;
if (selectedPiece == null || cell == null) return;
if (selectedMoves.Contains(cell.gridPos))
{
gameManager.TryLocalMove(selectedPiece.data.pos, cell.gridPos);
}
ClearSelection();
}
private void SelectPiece(UIChessPiece piece)
{
ClearSelection();
selectedPiece = piece;
piece.SetSelected(true);
ShowSelectMark(piece); // 点击选中的棋子下面显示标记图
selectedMoves.AddRange(gameManager.rules.GetLegalMoves(gameManager.board, piece.data));
for (int i = 0; i < selectedMoves.Count; i++)
{
var target = gameManager.board.GetPiece(selectedMoves[i]);
cells[selectedMoves[i].y, selectedMoves[i].x].ShowHint(target != null);
}
}
private void ClearSelection()
{
if (selectedPiece != null) selectedPiece.SetSelected(false);
selectedPiece = null;
selectedMoves.Clear();
HideSelectMark();
for (int y = 0; y < ChessConst.BoardHeight; y++)
for (int x = 0; x < ChessConst.BoardWidth; x++)
if (cells[y, x] != null) cells[y, x].HideHint();
}
/// <summary>选中标记:显示在点击的棋子下面(拖了 sprite_HintDot 才显示)</summary>
private void ShowSelectMark(UIChessPiece piece)
{
if (sprite_HintDot == null || piece == null || piece.data == null || !gridValid) return;
if (img_SelectMark == null)
{
var go = new GameObject("SelectMark", typeof(RectTransform), typeof(Image));
var rt = (RectTransform)go.transform;
rt.SetParent(tr_UnderMarks, false);
img_SelectMark = go.GetComponent<Image>();
img_SelectMark.raycastTarget = false;
}
img_SelectMark.sprite = sprite_HintDot;
var mrt = (RectTransform)img_SelectMark.transform;
mrt.anchoredPosition = GetPos(piece.data.pos);
float s = cellStep * selectMarkScale;
mrt.sizeDelta = new Vector2(s, s);
mrt.localEulerAngles = new Vector3(0f, 0f, gridAngle);
img_SelectMark.gameObject.SetActive(true);
}
private void HideSelectMark()
{
if (img_SelectMark != null) img_SelectMark.gameObject.SetActive(false);
}
// ================= 数据层事件 → 表现层 =================
/// <summary>走子成功(本地或网络):动画 + 上一步标记 + 将军提示</summary>
private void OnChessMoveApplied(ChessMoveEventArgs e)
{
UIChessPiece pieceUI;
if (pieceMap.TryGetValue(e.movePieceId, out pieceUI) && pieceUI != null)
{
var prt = (RectTransform)pieceUI.transform;
prt.DOKill();
prt.DOAnchorPos(GetPos(e.move.toX, e.move.toY), 0.35f).SetEase(Ease.OutQuad);
}
UIChessPiece capUI;
if (e.capturedPieceId >= 0 && pieceMap.TryGetValue(e.capturedPieceId, out capUI) && capUI != null)
{
var crt = (RectTransform)capUI.transform;
crt.DOKill();
crt.DOScale(0f, 0.30f).SetDelay(0.18f).SetEase(Ease.InBack)
.OnComplete(() => { if (capUI != null) capUI.gameObject.SetActive(false); });
}
ShowLastMoveMark(e.move);
if (e.isCheck) ShowToast("将军!");
}
/// <summary>悔棋完成:全量刷新</summary>
private void OnChessUndoApplied(int undoCount)
{
RefreshAllPieces();
}
/// <summary>对局结束:锁定交互</summary>
private void OnChessGameOver(ChessCamp winner)
{
SetInteractable(false);
ShowToast(winner == myCamp ? "你赢了!" : "你输了");
}
/// <summary>回合切换</summary>
private void OnTurnChanged(ChessCamp camp)
{
if (camp == myCamp && gameManager != null && gameManager.moveCount > 0)
ShowToast("轮到你走棋");
}
// ================= 对外接口 =================
/// <summary>显示居中提示文字(将军/轮到你/悔棋等)</summary>
public void ShowToast(string msg)
{
if (tmp_Toast == null) return;
tmp_Toast.text = msg;
tmp_Toast.gameObject.SetActive(true);
var rt = tmp_Toast.rectTransform;
toastTween?.Kill();
rt.localScale = Vector3.one * 0.6f;
toastTween = rt.DOScale(1f, 0.18f).SetEase(Ease.OutBack).OnComplete(() =>
{
rt.DOScale(0.6f, 0.35f).SetDelay(1.0f).SetEase(Ease.InBack).OnComplete(() =>
{
if (tmp_Toast != null) tmp_Toast.gameObject.SetActive(false);
});
});
}
/// <summary>锁定/解锁棋盘交互(对局结束时锁定)</summary>
public void SetInteractable(bool value)
{
interactable = value;
foreach (var kv in pieceMap)
if (kv.Value != null) kv.Value.SetInteractable(value);
if (!value) ClearSelection();
}
// ================= 内部工具 =================
/// <summary>上一步标记(起点/终点,可用自己的图)</summary>
private void ShowLastMoveMark(ChessMoveData move)
{
if (lastFromMark == null || lastToMark == null)
{
lastFromMark = CreateMark("LastFrom", sprite_LastFromMark, new Color(1f, 0.55f, 0f, 0.30f));
lastToMark = CreateMark("LastTo", sprite_LastToMark, new Color(1f, 0.55f, 0f, 0.45f));
}
PlaceMark(lastFromMark, new Vector2Int(move.fromX, move.fromY));
PlaceMark(lastToMark, new Vector2Int(move.toX, move.toY));
}
private void HideLastMoveMark()
{
if (lastFromMark != null) lastFromMark.gameObject.SetActive(false);
if (lastToMark != null) lastToMark.gameObject.SetActive(false);
}
private RectTransform CreateMark(string name, Sprite sprite, Color fallbackColor)
{
var go = new GameObject(name, typeof(RectTransform), typeof(Image));
var rt = (RectTransform)go.transform;
rt.SetParent(tr_Marks, false);
rt.sizeDelta = new Vector2(cellStep * lastMarkScale, cellStep * lastMarkScale);
var img = go.GetComponent<Image>();
img.sprite = sprite; // 拖了图用图,没拖保持代码生成的透明方块
img.color = sprite != null ? Color.white : fallbackColor; // 用图时不染色
img.raycastTarget = false;
return rt;
}
private void PlaceMark(RectTransform mark, Vector2Int pos)
{
mark.anchoredPosition = GetPos(pos);
mark.gameObject.SetActive(true);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 223dd72793f90b243a81f10d13afda56
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,101 @@
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 棋盘格子控件(一个交叉点):
/// 支持两种接入方式:
/// 1. 预制体(拖到 UIChessBoard.prefab_Cell):根节点挂本脚本 + Image + Button,
/// Image 可作点击热区(透明)或格子底图(保留原样显示)
/// 2. 不拖预制体:由 UIChessBoard 代码生成(透明热区)
/// 走子提示(Hint 子物体)没有会自动创建,不拦截射线
/// </summary>
public class UIChessCell : MonoBehaviour
{
/// <summary>逻辑坐标(x 0~8,y 0~9,红方在下方;黑方视角棋盘会整体翻转)</summary>
public Vector2Int gridPos;
/// <summary>点击热区/格子底图(预制体上拖;为空自动 GetComponent)</summary>
public Image img_Click;
/// <summary>走子提示(预制体上拖;为空自动找/建名为 Hint 的子物体)</summary>
public Image img_Hint;
private Button btn_Click;
private UIChessBoard ownerBoard;
private Sprite sprite_Dot;
private Sprite sprite_Ring;
private float dotSize;
private float ringSize;
/// <summary>由 UIChessBoard 生成时调用(cellSize = 网格间距)</summary>
public void Init(UIChessBoard board, Vector2Int pos, float cellSize)
{
ownerBoard = board;
gridPos = pos;
// ---- 点击热区 ----
if (img_Click == null) img_Click = GetComponent<Image>();
if (img_Click == null)
{
img_Click = gameObject.AddComponent<Image>();
img_Click.color = new Color(1f, 1f, 1f, 0f); // 代码补的热区为全透明(预制体自带底图则保留原样)
}
img_Click.raycastTarget = true;
// ---- 走子提示 ----
if (img_Hint == null)
{
var t = transform.Find("Hint");
if (t != null) img_Hint = t.GetComponent<Image>();
if (img_Hint == null) CreateHint();
}
if (img_Hint != null)
{
img_Hint.raycastTarget = false;
img_Hint.gameObject.SetActive(false);
}
// 落子路径点固定用代码绘制的圆点/圆圈(颜色已烘焙)
sprite_Dot = ChessArtFactory.GetHintDotSprite();
sprite_Ring = ChessArtFactory.GetCaptureRingSprite();
dotSize = cellSize * 0.45f;
ringSize = cellSize * 1.12f;
// ---- 按钮 ----
btn_Click = GetComponent<Button>();
if (btn_Click == null)
{
btn_Click = gameObject.AddComponent<Button>();
btn_Click.transition = Selectable.Transition.None;
}
btn_Click.onClick.AddListener(() => ownerBoard.OnCellClicked(this));
}
/// <summary>显示走子提示:isCapture=false 走子点 / true 吃子圈(自定义图不染色)</summary>
public void ShowHint(bool isCapture)
{
if (img_Hint == null) return;
img_Hint.gameObject.SetActive(true);
img_Hint.sprite = isCapture ? sprite_Ring : sprite_Dot;
img_Hint.color = Color.white; // 默认图的绿/红已烘焙在图里;自定义图保持原色
img_Hint.rectTransform.sizeDelta = isCapture
? new Vector2(ringSize, ringSize)
: new Vector2(dotSize, dotSize);
}
public void HideHint()
{
if (img_Hint != null) img_Hint.gameObject.SetActive(false);
}
private void CreateHint()
{
var hgo = new GameObject("Hint", typeof(RectTransform), typeof(Image));
var hrt = (RectTransform)hgo.transform;
hrt.SetParent(transform, false);
hrt.anchorMin = hrt.anchorMax = new Vector2(0.5f, 0.5f);
hrt.anchoredPosition = Vector2.zero;
img_Hint = hgo.GetComponent<Image>();
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 901881a7b6afb064ebb158952ef5839c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,111 @@
using TMPro;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 棋子控件(支持两种接入方式):
///
/// 1. 预制体(推荐,拖到 UIChessBoard.prefab_Piece):
/// 根节点:挂本脚本 + Image(棋子底图,可留空由代码补默认圆)
/// 可选子物体:TMP 文字(显示汉字,用按类型成品图时会自动隐藏)、
/// 名为 SelectRing 的 Image(选中描边圈,没有则用底图变色代替)
///
/// 2. 不拖预制体:由 UIChessBoard 代码生成默认样式(Image + SelectRing + Label)
/// </summary>
public class UIChessPiece : MonoBehaviour
{
/// <summary>棋子数据(普通类数据,表现层唯一数据源)</summary>
public ChessPieceData data;
/// <summary>棋子底图(预制体上拖;为空自动 GetComponent)</summary>
public Image img_Piece;
/// <summary>棋子汉字(预制体上拖 TMP 子物体;为空自动查找)</summary>
public TextMeshProUGUI tmp_Label;
/// <summary>选中描边圈(预制体上拖;为空自动找名为 SelectRing 的子物体)</summary>
public Image img_Select;
private Button btn_Click;
private UIChessBoard ownerBoard;
private Color originalColor = Color.white;
private Color selectTint = new Color(1f, 0.84f, 0.31f, 1f);
/// <summary>由 UIChessBoard 生成时调用</summary>
public void Init(UIChessBoard board, ChessPieceData pieceData)
{
ownerBoard = board;
data = pieceData;
// ---- 底图 ----
if (img_Piece == null) img_Piece = GetComponent<Image>();
if (img_Piece != null)
{
img_Piece.raycastTarget = true;
originalColor = img_Piece.color;
selectTint = Color.Lerp(originalColor, new Color(1f, 0.85f, 0.3f), 0.5f);
// 图片优先级:按类型的成品图 > 通用底图 > 预制体自带图 > 代码生成圆
Sprite typeSprite = board.GetTypeSprite(data.camp, data.pieceType);
if (typeSprite != null) img_Piece.sprite = typeSprite;
else if (board.sprite_PieceBg != null) img_Piece.sprite = board.sprite_PieceBg;
else if (img_Piece.sprite == null) img_Piece.sprite = ChessArtFactory.GetCircleSprite();
}
// ---- 汉字 ----
if (tmp_Label == null) tmp_Label = GetComponentInChildren<TextMeshProUGUI>(true);
if (tmp_Label != null)
{
if (board.GetTypeSprite(data.camp, data.pieceType) != null)
{
// 用了按类型的成品图(图里已带字)→ 隐藏文字
tmp_Label.gameObject.SetActive(false);
}
else
{
tmp_Label.gameObject.SetActive(true);
tmp_Label.text = data.displayName;
tmp_Label.color = board.GetTextColor(data.camp);
if (tmp_Label.font == null && board.ResolvedFont != null)
tmp_Label.font = board.ResolvedFont;
}
tmp_Label.raycastTarget = false;
}
// ---- 选中描边 ----
if (img_Select == null)
{
var t = transform.Find("SelectRing");
if (t != null) img_Select = t.GetComponent<Image>();
}
if (img_Select != null)
{
img_Select.raycastTarget = false;
img_Select.gameObject.SetActive(false);
}
// ---- 按钮 ----
btn_Click = GetComponent<Button>();
if (btn_Click == null) btn_Click = gameObject.AddComponent<Button>();
btn_Click.targetGraphic = img_Piece;
btn_Click.onClick.AddListener(() => ownerBoard.OnPieceClicked(this));
}
/// <summary>选中/取消选中(有 SelectRing 显示圈,没有则底图变色)</summary>
public void SetSelected(bool value)
{
if (img_Select != null)
{
img_Select.gameObject.SetActive(value);
if (img_Piece != null) img_Piece.color = originalColor;
return;
}
if (img_Piece != null) img_Piece.color = value ? selectTint : originalColor;
}
/// <summary>禁用/启用点击</summary>
public void SetInteractable(bool value)
{
if (btn_Click != null) btn_Click.interactable = value;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bd52c40d1e9cf0f499322a0a987e1f2e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 964144c14ed15ee4381f50e6a59090f7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,113 @@
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 运行时美术生成(普通类):
/// 不读取任何预制体/资源文件,用代码生成棋子圆底图、空心圆环等 Sprite
/// </summary>
public static class ChessArtFactory
{
private static readonly Dictionary<string, Sprite> cache = new Dictionary<string, Sprite>();
/// <summary>
/// 实心圆(棋子底图:米色主体 + 深棕外圈,边缘抗锯齿)
/// </summary>
public static Sprite GetCircleSprite(int size = 128)
{
return GetCached("circle_" + size, size, (x, y, c, r) =>
{
float d = Vector2.Distance(new Vector2(x, y), new Vector2(c, c));
float alpha = Mathf.Clamp01(r + 0.5f - d);
if (alpha <= 0) return Color.clear;
Color fill = new Color32(0xF7, 0xEB, 0xD3, 0xFF);
Color rim = new Color32(0x4E, 0x34, 0x2E, 0xFF);
float rimWidth = r * 0.08f;
Color col = d > r - rimWidth ? rim : fill;
col.a = alpha;
return col;
});
}
/// <summary>
/// 空心圆环(选中圈 / 吃子提示,白色,由 Image.color 上色)
/// </summary>
public static Sprite GetRingSprite(int size = 128)
{
return GetCached("ring_" + size, size, (x, y, c, r) =>
{
float d = Vector2.Distance(new Vector2(x, y), new Vector2(c, c));
float inner = r * 0.78f;
float outer = r * 0.98f;
float alpha = Mathf.Clamp01(d - inner + 1.5f) * Mathf.Clamp01(outer - d + 1.5f);
return alpha <= 0 ? Color.clear : new Color(1f, 1f, 1f, alpha);
});
}
/// <summary>
/// 实心小圆点(白色,由 Image.color 上色)
/// </summary>
public static Sprite GetDotSprite(int size = 64)
{
return GetCached("dot_" + size, size, (x, y, c, r) =>
{
float d = Vector2.Distance(new Vector2(x, y), new Vector2(c, c));
float alpha = Mathf.Clamp01(r + 0.5f - d);
return alpha <= 0 ? Color.clear : new Color(1f, 1f, 1f, alpha);
});
}
/// <summary>
/// 走子提示点(绿色实心圆,颜色已烘焙进图里,使用时不再染色)
/// </summary>
public static Sprite GetHintDotSprite(int size = 64)
{
return GetCached("hintdot_" + size, size, (x, y, c, r) =>
{
float d = Vector2.Distance(new Vector2(x, y), new Vector2(c, c));
float alpha = Mathf.Clamp01(r + 0.5f - d) * 0.90f;
return alpha <= 0 ? Color.clear : new Color(0.26f, 0.66f, 0.31f, alpha);
});
}
/// <summary>
/// 吃子提示圈(红色空心圆环,颜色已烘焙进图里,使用时不再染色)
/// </summary>
public static Sprite GetCaptureRingSprite(int size = 128)
{
return GetCached("capturering_" + size, size, (x, y, c, r) =>
{
float d = Vector2.Distance(new Vector2(x, y), new Vector2(c, c));
float inner = r * 0.78f;
float outer = r * 0.98f;
float alpha = Mathf.Clamp01(d - inner + 1.5f) * Mathf.Clamp01(outer - d + 1.5f) * 0.95f;
return alpha <= 0 ? Color.clear : new Color(0.91f, 0.25f, 0.20f, alpha);
});
}
private delegate Color PixelFunc(int x, int y, float center, float radius);
private static Sprite GetCached(string key, int size, PixelFunc func)
{
Sprite sp;
if (cache.TryGetValue(key, out sp) && sp != null) return sp;
var tex = new Texture2D(size, size, TextureFormat.RGBA32, false)
{
wrapMode = TextureWrapMode.Clamp,
filterMode = FilterMode.Bilinear
};
float c = (size - 1) * 0.5f;
float r = size * 0.5f - 1f;
var pixels = new Color[size * size];
for (int y = 0; y < size; y++)
for (int x = 0; x < size; x++)
pixels[y * size + x] = func(x, y, c, r);
tex.SetPixels(pixels);
tex.Apply();
sp = Sprite.Create(tex, new Rect(0, 0, size, size), new Vector2(0.5f, 0.5f), 100f);
cache[key] = sp;
return sp;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8bf2ef822cd702443b200a8e27bb23d4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,114 @@
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 棋盘数据管理(普通类):
/// 维护 9x10 棋子网格与全部棋子数据,负责落子/吃子/模拟回滚等纯数据操作
/// </summary>
public class ChessBoardManager
{
/// <summary>网格数据 grid[x,y](null = 空位)</summary>
private ChessPieceData[,] grid = new ChessPieceData[ChessConst.BoardWidth, ChessConst.BoardHeight];
/// <summary>全部棋子(含已被吃的,id 即添加顺序)</summary>
public List<ChessPieceData> allPieces = new List<ChessPieceData>();
public ChessPieceData GetPiece(int x, int y)
{
if (!ChessConst.InBoard(x, y)) return null;
return grid[x, y];
}
public ChessPieceData GetPiece(Vector2Int p)
{
return GetPiece(p.x, p.y);
}
/// <summary>初始化一副标准开局棋子</summary>
public void InitDefaultBoard()
{
grid = new ChessPieceData[ChessConst.BoardWidth, ChessConst.BoardHeight];
allPieces.Clear();
int id = 0;
// 底线:车马象士将士士象马车
var backRow = new[]
{
ChessPieceType.Ju, ChessPieceType.Ma, ChessPieceType.Xiang, ChessPieceType.Shi,
ChessPieceType.Jiang, ChessPieceType.Shi, ChessPieceType.Xiang, ChessPieceType.Ma, ChessPieceType.Ju
};
// 红方(下方 y0~4)
for (int x = 0; x < ChessConst.BoardWidth; x++)
AddPiece(id++, backRow[x], ChessCamp.Red, x, 0);
AddPiece(id++, ChessPieceType.Pao, ChessCamp.Red, 1, 2);
AddPiece(id++, ChessPieceType.Pao, ChessCamp.Red, 7, 2);
for (int x = 0; x < ChessConst.BoardWidth; x += 2)
AddPiece(id++, ChessPieceType.Bing, ChessCamp.Red, x, 3);
// 黑方(上方 y5~9)
for (int x = 0; x < ChessConst.BoardWidth; x++)
AddPiece(id++, backRow[x], ChessCamp.Black, x, 9);
AddPiece(id++, ChessPieceType.Pao, ChessCamp.Black, 1, 7);
AddPiece(id++, ChessPieceType.Pao, ChessCamp.Black, 7, 7);
for (int x = 0; x < ChessConst.BoardWidth; x += 2)
AddPiece(id++, ChessPieceType.Bing, ChessCamp.Black, x, 6);
}
private ChessPieceData AddPiece(int id, ChessPieceType type, ChessCamp camp, int x, int y)
{
var p = new ChessPieceData
{
id = id,
pieceType = type,
camp = camp,
pos = new Vector2Int(x, y),
isAlive = true
};
allPieces.Add(p);
grid[x, y] = p;
return p;
}
/// <summary>查找某方存活的将 / 帅</summary>
public ChessPieceData FindKing(ChessCamp camp)
{
for (int i = 0; i < allPieces.Count; i++)
{
var p = allPieces[i];
if (p.isAlive && p.camp == camp && p.pieceType == ChessPieceType.Jiang) return p;
}
return null;
}
/// <summary>
/// 真正执行移动(被吃的棋子标记 isAlive=false)。不做任何规则校验,调用方负责校验。
/// 返回被吃的棋子(没吃子返回 null)
/// </summary>
public ChessPieceData ApplyMove(ChessPieceData piece, Vector2Int to)
{
ChessPieceData captured = GetPiece(to);
if (captured != null) captured.isAlive = false;
grid[piece.pos.x, piece.pos.y] = null;
piece.pos = to;
grid[to.x, to.y] = piece;
return captured;
}
/// <summary>
/// 回退一步移动(配合悔棋 / 规则模拟):
/// 把 piece 移回 from,把 captured(可为 null)复活在原位置
/// </summary>
public void UndoMove(ChessPieceData piece, Vector2Int from, ChessPieceData captured)
{
Vector2Int to = piece.pos;
grid[to.x, to.y] = captured;
if (captured != null)
{
captured.isAlive = true;
captured.pos = to;
}
piece.pos = from;
grid[from.x, from.y] = piece;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7a2c658efcd5fea4cb034a20912e41a0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,170 @@
using System;
using UnityEngine;
/// <summary>
/// 象棋对局总管理(普通类,由 ChineseChessMainPanel 持有并统一控制)
/// 负责:开局、回合、走棋校验与应用、将军/胜负判断、悔棋、网络同步数据封装
///
/// 联网方案:帧同步——走法与规则判断全在前端本地跑,
/// 走子数据通过 SyncGameData 透传给对方(后端不解析),后端只负责胜负结算
/// </summary>
public class ChessGameManager
{
/// <summary>棋盘数据管理</summary>
public ChessBoardManager board = new ChessBoardManager();
/// <summary>规则管理</summary>
public ChessRulesManager rules = new ChessRulesManager();
/// <summary>悔棋记录管理</summary>
public ChessMoveRecorder recorder = new ChessMoveRecorder();
/// <summary>本地玩家阵营</summary>
public ChessCamp myCamp;
/// <summary>当前轮到哪方走(红先黑后)</summary>
public ChessCamp currentTurn;
/// <summary>已走的半回合数(同时作为帧序号)</summary>
public int moveCount;
/// <summary>对局是否已结束</summary>
public bool isGameOver;
/// <summary>胜方</summary>
public ChessCamp winnerCamp;
/// <summary>走棋成功(本地或网络同步),参数含完整走子数据</summary>
public event Action<ChessMoveEventArgs> OnMoveApplied;
/// <summary>悔棋完成,参数为回退的步数</summary>
public event Action<int> OnUndoApplied;
/// <summary>对局结束(本地规则判定),参数为胜方</summary>
public event Action<ChessCamp> OnGameOver;
/// <summary>回合切换</summary>
public event Action<ChessCamp> OnTurnChanged;
/// <summary>现在是否轮到本地玩家</summary>
public bool IsMyTurn => !isGameOver && currentTurn == myCamp;
/// <summary>开一局新对局</summary>
public void StartGame(ChessCamp myCamp)
{
this.myCamp = myCamp;
board.InitDefaultBoard();
recorder.Clear();
moveCount = 0;
isGameOver = false;
winnerCamp = ChessCamp.None;
currentTurn = ChessCamp.Red; // 红先
OnTurnChanged?.Invoke(currentTurn);
}
/// <summary>
/// 本地玩家尝试走棋(完整校验:回合、归属、规则、送将),失败返回 false
/// </summary>
public bool TryLocalMove(Vector2Int from, Vector2Int to)
{
if (isGameOver || currentTurn != myCamp) return false;
var piece = board.GetPiece(from);
if (piece == null || piece.camp != myCamp) return false;
if (!rules.GetLegalMoves(board, piece).Contains(to)) return false;
ApplyMoveInternal(piece, to, true);
return true;
}
/// <summary>
/// 应用网络同步过来的走棋(对方走的)。带帧序号校验,重复/乱序帧直接丢弃
/// </summary>
public bool ApplyRemoteMove(ChessMoveData move)
{
if (isGameOver || move == null) return false;
// 帧序号校验
if (move.seq < moveCount) return false; // 重复帧
if (move.seq > moveCount)
{
Debug.LogWarning($"[Chess] 丢帧:收到 seq={move.seq},本地 moveCount={moveCount}");
return false; // 乱序帧
}
var from = new Vector2Int(move.fromX, move.fromY);
var to = new Vector2Int(move.toX, move.toY);
var piece = board.GetPiece(from);
if (piece == null || piece.camp == myCamp || piece.camp != currentTurn) return false;
if (!rules.GetLegalMoves(board, piece).Contains(to)) return false;
ApplyMoveInternal(piece, to, false);
return true;
}
/// <summary>应用一步棋(数据层),并触发相关事件</summary>
private void ApplyMoveInternal(ChessPieceData piece, Vector2Int to, bool isLocal)
{
Vector2Int from = piece.pos;
ChessPieceData captured = board.ApplyMove(piece, to);
moveCount++;
recorder.Push(new ChessMoveRecord { piece = piece, from = from, to = to, captured = captured });
ChessCamp moverCamp = piece.camp;
currentTurn = moverCamp == ChessCamp.Red ? ChessCamp.Black : ChessCamp.Red;
// 胜负与将军判断(纯前端本地判定)
bool check = false;
bool gameOver = false;
if (captured != null && captured.pieceType == ChessPieceType.Jiang)
{
gameOver = true; // 将/帅被吃
}
else
{
check = rules.IsInCheck(board, currentTurn);
if (!rules.HasAnyLegalMove(board, currentTurn))
{
gameOver = true; // 对方无任何合法走法 → 将死或困毙
}
}
var args = new ChessMoveEventArgs
{
move = new ChessMoveData { seq = moveCount - 1, fromX = from.x, fromY = from.y, toX = to.x, toY = to.y },
movePieceId = piece.id,
capturedPieceId = captured != null ? captured.id : -1,
isLocal = isLocal,
isCheck = check,
moverCamp = moverCamp
};
OnMoveApplied?.Invoke(args);
if (gameOver) SetGameOver(moverCamp);
else OnTurnChanged?.Invoke(currentTurn);
}
/// <summary>
/// 悔棋:回退最近一步(一个半回合,双方确认后各调一次,两端回退同一手)
/// </summary>
public bool UndoOneStep()
{
var r = recorder.PopLast();
if (r == null) return false;
board.UndoMove(r.piece, r.from, r.captured);
currentTurn = r.piece.camp;
moveCount--;
isGameOver = false;
winnerCamp = ChessCamp.None;
OnUndoApplied?.Invoke(1);
OnTurnChanged?.Invoke(currentTurn);
return true;
}
private void SetGameOver(ChessCamp winner)
{
isGameOver = true;
winnerCamp = winner;
OnGameOver?.Invoke(winner);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ca1e80654f4a572429b16399e92aa789
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,56 @@
using System;
/// <summary>
/// 一步走棋数据(本地记录与网络帧同步共用)
/// </summary>
[Serializable]
public class ChessMoveData
{
/// <summary>半回合序号(第几步,从 0 开始,用于帧顺序校验与去重)</summary>
public int seq;
public int fromX;
public int fromY;
public int toX;
public int toY;
}
/// <summary>
/// 象棋网络帧同步数据(走 SyncGameData 通道,后端只透传不解析)
/// 注意:只用于走棋同步;悔棋/认输/求和走之前写好的 GameOperation 通道
/// </summary>
[Serializable]
public class ChessNetData
{
/// <summary>消息类型:1=走棋</summary>
public int msgType;
/// <summary>发送者 userId(接收方用来过滤自己的回声)</summary>
public string userId;
/// <summary>走棋数据(msgType=1 时有效)</summary>
public ChessMoveData move;
}
/// <summary>
/// 走棋事件参数(ChineseChessMainPanel / UIChessBoard 订阅 ChessGameManager 事件用)
/// </summary>
public class ChessMoveEventArgs
{
/// <summary>这一步的完整数据(含 seq,可直接序列化发给对方)</summary>
public ChessMoveData move;
/// <summary>走子方棋子 id</summary>
public int movePieceId;
/// <summary>被吃棋子 id(没吃子为 -1)</summary>
public int capturedPieceId = -1;
/// <summary>是否本地玩家走的(false = 网络同步过来)</summary>
public bool isLocal;
/// <summary>这步走完后对方是否被将军</summary>
public bool isCheck;
/// <summary>走子方</summary>
public ChessCamp moverCamp;
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bb9f80b61c6b15449be418e6462c4db7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,53 @@
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 一步棋的完整回滚信息(普通类)
/// </summary>
public class ChessMoveRecord
{
/// <summary>走的棋子</summary>
public ChessPieceData piece;
/// <summary>起点</summary>
public Vector2Int from;
/// <summary>终点</summary>
public Vector2Int to;
/// <summary>被吃的棋子(没吃子为 null)</summary>
public ChessPieceData captured;
}
/// <summary>
/// 悔棋记录管理(普通类):只负责记录栈的存取,具体回滚由 ChessGameManager 驱动
/// </summary>
public class ChessMoveRecorder
{
private readonly List<ChessMoveRecord> records = new List<ChessMoveRecord>();
public int Count => records.Count;
public void Push(ChessMoveRecord r)
{
if (r != null) records.Add(r);
}
public ChessMoveRecord PeekLast()
{
return records.Count > 0 ? records[records.Count - 1] : null;
}
public ChessMoveRecord PopLast()
{
if (records.Count == 0) return null;
var r = records[records.Count - 1];
records.RemoveAt(records.Count - 1);
return r;
}
public void Clear()
{
records.Clear();
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 53f43f8bd8982614981146900ee300b1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,41 @@
using UnityEngine;
/// <summary>
/// 棋子数据(普通类:纯数据,不包含任何表现层内容)
/// </summary>
public class ChessPieceData
{
/// <summary>棋子唯一编号(同一次对局内唯一,用于 UI 映射与网络同步)</summary>
public int id;
/// <summary>棋子类型</summary>
public ChessPieceType pieceType;
/// <summary>所属阵营</summary>
public ChessCamp camp;
/// <summary>逻辑坐标(x 0~8,y 0~9,红方在下方)</summary>
public Vector2Int pos;
/// <summary>是否存活(被吃后为 false)</summary>
public bool isAlive = true;
/// <summary>棋子显示名(红:帅仕相马车炮兵 / 黑:将士象马车炮卒)</summary>
public string displayName
{
get
{
switch (pieceType)
{
case ChessPieceType.Jiang: return camp == ChessCamp.Red ? "帅" : "将";
case ChessPieceType.Shi: return camp == ChessCamp.Red ? "仕" : "士";
case ChessPieceType.Xiang: return camp == ChessCamp.Red ? "相" : "象";
case ChessPieceType.Ma: return "马";
case ChessPieceType.Ju: return "车";
case ChessPieceType.Pao: return "炮";
case ChessPieceType.Bing: return camp == ChessCamp.Red ? "兵" : "卒";
default: return "";
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a87143ece34ef8c4cb2ff1ea6cde91b3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,302 @@
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 走棋规则管理(普通类):
/// 各兵种走法生成、将军判断、将死/困毙判断、将帅照面判断
/// 前后端为帧同步方案:所有规则在两端前端各自跑同一套逻辑,后端不参与
/// </summary>
public class ChessRulesManager
{
private static readonly Vector2Int[] lineDirs =
{
new Vector2Int(1, 0), new Vector2Int(-1, 0),
new Vector2Int(0, 1), new Vector2Int(0, -1)
};
// 马的 8 个日字偏移
private static readonly int[,] maOffsets =
{
{ 1, 2 }, { 2, 1 }, { 2, -1 }, { 1, -2 },
{ -1, -2 }, { -2, -1 }, { -2, 1 }, { -1, 2 }
};
// 象的 4 个田字偏移
private static readonly int[,] xiangOffsets = { { 2, 2 }, { 2, -2 }, { -2, 2 }, { -2, -2 } };
// 士的 4 个斜向偏移
private static readonly int[,] shiOffsets = { { 1, 1 }, { 1, -1 }, { -1, 1 }, { -1, -1 } };
// 将帅的 4 个直向偏移
private static readonly int[,] jiangOffsets = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } };
/// <summary>
/// 获取棋子在规则上的所有可走点(空位 + 吃子点),不含"送将"过滤
/// </summary>
public List<Vector2Int> GetRawMoves(ChessBoardManager board, ChessPieceData piece)
{
var result = new List<Vector2Int>();
if (piece == null || !piece.isAlive) return result;
int x = piece.pos.x;
int y = piece.pos.y;
switch (piece.pieceType)
{
case ChessPieceType.Ju: // 车:直线滑行
AddSlideMoves(board, piece, result);
break;
case ChessPieceType.Pao: // 炮:平移同车;吃子必须隔一个炮架
AddPaoMoves(board, piece, result);
break;
case ChessPieceType.Ma: // 马:日字 + 蹩马腿
for (int i = 0; i < maOffsets.GetLength(0); i++)
{
int dx = maOffsets[i, 0];
int dy = maOffsets[i, 1];
// 蹩马腿:马腿在走子方向上紧挨马的那一格
Vector2Int leg = new Vector2Int(x + dx / 2, y + dy / 2);
if (board.GetPiece(leg) != null) continue;
TryAddTarget(board, piece, new Vector2Int(x + dx, y + dy), result);
}
break;
case ChessPieceType.Xiang: // 象/相:田字 + 塞象眼 + 不过河
for (int i = 0; i < xiangOffsets.GetLength(0); i++)
{
int dx = xiangOffsets[i, 0];
int dy = xiangOffsets[i, 1];
Vector2Int eye = new Vector2Int(x + dx / 2, y + dy / 2); // 象眼
if (!ChessConst.InBoard(eye) || board.GetPiece(eye) != null) continue;
Vector2Int to = new Vector2Int(x + dx, y + dy);
if (!ChessConst.InBoard(to)) continue;
// 不能过河
if (piece.camp == ChessCamp.Red && to.y > ChessConst.RedSideMaxY) continue;
if (piece.camp == ChessCamp.Black && to.y < ChessConst.BlackSideMinY) continue;
TryAddTarget(board, piece, to, result);
}
break;
case ChessPieceType.Shi: // 士/仕:九宫内斜走一格
for (int i = 0; i < shiOffsets.GetLength(0); i++)
{
Vector2Int to = new Vector2Int(x + shiOffsets[i, 0], y + shiOffsets[i, 1]);
if (ChessConst.InPalace(to, piece.camp))
TryAddTarget(board, piece, to, result);
}
break;
case ChessPieceType.Jiang: // 将/帅:九宫内直走一格
for (int i = 0; i < jiangOffsets.GetLength(0); i++)
{
Vector2Int to = new Vector2Int(x + jiangOffsets[i, 0], y + jiangOffsets[i, 1]);
if (ChessConst.InPalace(to, piece.camp))
TryAddTarget(board, piece, to, result);
}
break;
case ChessPieceType.Bing: // 兵/卒:前进一步;过河后可左右平移
int fwd = piece.camp == ChessCamp.Red ? 1 : -1;
TryAddTarget(board, piece, new Vector2Int(x, y + fwd), result);
bool crossed = piece.camp == ChessCamp.Red
? y >= ChessConst.BlackSideMinY
: y <= ChessConst.RedSideMaxY;
if (crossed)
{
TryAddTarget(board, piece, new Vector2Int(x - 1, y), result);
TryAddTarget(board, piece, new Vector2Int(x + 1, y), result);
}
break;
}
return result;
}
/// <summary>
/// 获取合法走法:在 RawMoves 基础上剔除"走完后自己被将军 / 将帅照面"的点
/// </summary>
public List<Vector2Int> GetLegalMoves(ChessBoardManager board, ChessPieceData piece)
{
var result = new List<Vector2Int>();
var raw = GetRawMoves(board, piece);
for (int i = 0; i < raw.Count; i++)
{
if (IsMoveSafe(board, piece, raw[i])) result.Add(raw[i]);
}
return result;
}
/// <summary>模拟走一步后自己是否安全(不被将军、不与对方将帅照面)</summary>
public bool IsMoveSafe(ChessBoardManager board, ChessPieceData piece, Vector2Int to)
{
Vector2Int from = piece.pos;
ChessPieceData captured = board.ApplyMove(piece, to);
bool safe = !IsInCheck(board, piece.camp);
board.UndoMove(piece, from, captured);
return safe;
}
/// <summary>camp 方的将/帅是否正被将军(含将帅照面)</summary>
public bool IsInCheck(ChessBoardManager board, ChessCamp camp)
{
var king = board.FindKing(camp);
if (king == null) return false;
return IsSquareAttacked(board, king.pos, camp == ChessCamp.Red ? ChessCamp.Black : ChessCamp.Red);
}
/// <summary>某点是否被 byCamp 方攻击(将帅照面按互相攻击处理)</summary>
public bool IsSquareAttacked(ChessBoardManager board, Vector2Int target, ChessCamp byCamp)
{
var pieces = board.allPieces;
for (int i = 0; i < pieces.Count; i++)
{
var p = pieces[i];
if (!p.isAlive || p.camp != byCamp) continue;
int dx = target.x - p.pos.x;
int dy = target.y - p.pos.y;
switch (p.pieceType)
{
case ChessPieceType.Ju: // 车
if ((dx == 0 || dy == 0) && CountPiecesBetween(board, p.pos, target) == 0) return true;
break;
case ChessPieceType.Pao: // 炮:隔一个炮架打
if ((dx == 0 || dy == 0) && CountPiecesBetween(board, p.pos, target) == 1) return true;
break;
case ChessPieceType.Ma: // 马(注意马腿在马的一侧)
if (Mathf.Abs(dx * dy) == 2)
{
Vector2Int leg = p.pos + new Vector2Int(dx / 2, dy / 2);
if (board.GetPiece(leg) == null) return true;
}
break;
case ChessPieceType.Bing: // 兵/卒只攻击前方(过河后加左右)
if (p.camp == ChessCamp.Red)
{
if (dx == 0 && dy == 1) return true;
bool crossed = p.pos.y >= ChessConst.BlackSideMinY;
if (crossed && dy == 0 && Mathf.Abs(dx) == 1) return true;
}
else
{
if (dx == 0 && dy == -1) return true;
bool crossed = p.pos.y <= ChessConst.RedSideMaxY;
if (crossed && dy == 0 && Mathf.Abs(dx) == 1) return true;
}
break;
case ChessPieceType.Jiang: // 将帅照面:同列且中间无子
if (dx == 0 && CountPiecesBetween(board, p.pos, target) == 0) return true;
break;
case ChessPieceType.Xiang: // 象
if (Mathf.Abs(dx) == 2 && Mathf.Abs(dy) == 2)
{
Vector2Int eye = p.pos + new Vector2Int(dx / 2, dy / 2);
if (board.GetPiece(eye) == null) return true;
}
break;
case ChessPieceType.Shi: // 士
if (Mathf.Abs(dx) == 1 && Mathf.Abs(dy) == 1) return true;
break;
}
}
return false;
}
/// <summary>camp 方是否还有任何一步合法走法(没有 → 被将死或困毙)</summary>
public bool HasAnyLegalMove(ChessBoardManager board, ChessCamp camp)
{
var pieces = board.allPieces;
for (int i = 0; i < pieces.Count; i++)
{
var p = pieces[i];
if (!p.isAlive || p.camp != camp) continue;
var raw = GetRawMoves(board, p);
for (int j = 0; j < raw.Count; j++)
{
if (IsMoveSafe(board, p, raw[j])) return true;
}
}
return false;
}
/// <summary>目标格是空位或是敌方棋子时可走</summary>
private void TryAddTarget(ChessBoardManager board, ChessPieceData piece, Vector2Int to, List<Vector2Int> result)
{
if (!ChessConst.InBoard(to)) return;
var occ = board.GetPiece(to);
if (occ == null || occ.camp != piece.camp) result.Add(to);
}
/// <summary>车:四个方向滑行</summary>
private void AddSlideMoves(ChessBoardManager board, ChessPieceData piece, List<Vector2Int> result)
{
for (int d = 0; d < lineDirs.Length; d++)
{
Vector2Int cur = piece.pos + lineDirs[d];
while (ChessConst.InBoard(cur) && board.GetPiece(cur) == null)
{
result.Add(cur);
cur += lineDirs[d];
}
// 撞到的第一个子若是敌方 → 可吃
if (ChessConst.InBoard(cur))
{
var occ = board.GetPiece(cur);
if (occ != null && occ.camp != piece.camp) result.Add(cur);
}
}
}
/// <summary>炮:平移同车;吃子需要隔恰好一个炮架</summary>
private void AddPaoMoves(ChessBoardManager board, ChessPieceData piece, List<Vector2Int> result)
{
for (int d = 0; d < lineDirs.Length; d++)
{
Vector2Int dir = lineDirs[d];
Vector2Int cur = piece.pos + dir;
// 先平移到第一个子(炮架)之前
while (ChessConst.InBoard(cur) && board.GetPiece(cur) == null)
{
result.Add(cur);
cur += dir;
}
if (!ChessConst.InBoard(cur)) continue;
// 越过炮架继续找第一个子
cur += dir;
while (ChessConst.InBoard(cur) && board.GetPiece(cur) == null)
cur += dir;
if (ChessConst.InBoard(cur))
{
var occ = board.GetPiece(cur);
if (occ != null && occ.camp != piece.camp) result.Add(cur);
}
}
}
/// <summary>统计同一直线上两点之间(开区间)的棋子数,要求两点同行或同列</summary>
private int CountPiecesBetween(ChessBoardManager board, Vector2Int a, Vector2Int b)
{
int count = 0;
if (a.x == b.x)
{
int dir = b.y > a.y ? 1 : -1;
for (int y = a.y + dir; y != b.y; y += dir)
if (board.GetPiece(a.x, y) != null) count++;
}
else if (a.y == b.y)
{
int dir = b.x > a.x ? 1 : -1;
for (int x = a.x + dir; x != b.x; x += dir)
if (board.GetPiece(x, a.y) != null) count++;
}
return count;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a98a9aa7f4bfc784e92da1c419602545
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,70 @@
using UnityEngine;
/// <summary>
/// 象棋阵营(数值与 RedisGameUser.type 对齐:1 黑方 2 红方)
/// </summary>
public enum ChessCamp
{
None = 0,
Black = 1, // 黑方
Red = 2, // 红方(先行)
}
/// <summary>
/// 棋子类型
/// </summary>
public enum ChessPieceType
{
None = 0,
Jiang = 1, // 将 / 帅
Shi = 2, // 士 / 仕
Xiang = 3, // 象 / 相
Ma = 4, // 马
Ju = 5, // 车
Pao = 6, // 炮
Bing = 7, // 卒 / 兵
}
/// <summary>
/// 象棋常量(逻辑坐标系:x 0~8 从左到右,y 0~9 从下到上,红方在 y0~y4)
/// </summary>
public static class ChessConst
{
/// <summary>棋盘横向交叉点数</summary>
public const int BoardWidth = 9;
/// <summary>棋盘纵向行数</summary>
public const int BoardHeight = 10;
/// <summary>九宫 x 范围</summary>
public const int PalaceMinX = 3;
public const int PalaceMaxX = 5;
/// <summary>红方九宫 y 范围</summary>
public const int RedPalaceMinY = 0;
public const int RedPalaceMaxY = 2;
/// <summary>黑方九宫 y 范围</summary>
public const int BlackPalaceMinY = 7;
public const int BlackPalaceMaxY = 9;
/// <summary>红方地盘最大 y(河界:y4/y5 之间)</summary>
public const int RedSideMaxY = 4;
/// <summary>黑方地盘最小 y</summary>
public const int BlackSideMinY = 5;
public static bool InBoard(int x, int y)
{
return x >= 0 && x < BoardWidth && y >= 0 && y < BoardHeight;
}
public static bool InBoard(Vector2Int p)
{
return InBoard(p.x, p.y);
}
/// <summary>是否在指定阵营的九宫内</summary>
public static bool InPalace(Vector2Int p, ChessCamp camp)
{
if (p.x < PalaceMinX || p.x > PalaceMaxX) return false;
return camp == ChessCamp.Red
? (p.y >= RedPalaceMinY && p.y <= RedPalaceMaxY)
: (p.y >= BlackPalaceMinY && p.y <= BlackPalaceMaxY);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ab01b7c35e4fd3a44bd4c768552ea118
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -56,6 +56,9 @@ public class ChineseChessMainPanel : GameMainPanel_Base
public TextMeshProUGUI tmp_WaitTime_Top; public TextMeshProUGUI tmp_WaitTime_Top;
public Image img_Title_Top; public Image img_Title_Top;
[Header("ChessGame 象棋对局")]
public UIChessBoard chessBoard; // 棋盘控件(Inspector 手动拖入;留空则运行时自动生成)
private Coroutine waitCountdown; private Coroutine waitCountdown;
public SkeletonGraphic skeletonGraphic; public SkeletonGraphic skeletonGraphic;
@@ -221,6 +224,7 @@ public class ChineseChessMainPanel : GameMainPanel_Base
{ {
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<ChessGameRoom>>(msg.ToString()); var va = JsonConvert.DeserializeObject<WebSocketResponseBase<ChessGameRoom>>(msg.ToString());
ChessGameRoom chessGameRoom = va.arguments[0]; ChessGameRoom chessGameRoom = va.arguments[0];
roomData = chessGameRoom; // 记录房间数据(开象棋对局时要取阵营)
UpdateUserData(chessGameRoom); UpdateUserData(chessGameRoom);
switch (chessGameRoom.users.Count) switch (chessGameRoom.users.Count)
@@ -359,6 +363,18 @@ public class ChineseChessMainPanel : GameMainPanel_Base
{ {
if (GameManager.Instance.user.BaseInfo.number!=id) if (GameManager.Instance.user.BaseInfo.number!=id)
{ {
// 悔棋回执:直接处理,不弹窗
if (type == 4) // 对方同意悔棋 → 本地悔一步
{
OnUndoAgreed();
return;
}
if (type == 5) // 对方拒绝悔棋
{
if (chessBoard != null) chessBoard.ShowToast("对方拒绝悔棋");
return;
}
// 1求和 2认输 3悔棋请求 → 走之前的确认弹窗
subUIManager.ShowAsync(UIPanel.ZGXQHint, new HintData subUIManager.ShowAsync(UIPanel.ZGXQHint, new HintData
{ {
roomData = roomData, roomData = roomData,
@@ -378,8 +394,13 @@ public class ChineseChessMainPanel : GameMainPanel_Base
Spine_KaiShi(); Spine_KaiShi();
StartCoroutine(DelayedKaiShiLoopToClose()); StartCoroutine(DelayedKaiShiLoopToClose());
// 初始化象棋对局(普通管理类统一在此控制)
StartChessGame();
btn_QiuHe.onClick.RemoveAllListeners(); btn_QiuHe.onClick.RemoveAllListeners();
btn_RenShu.onClick.RemoveAllListeners(); btn_RenShu.onClick.RemoveAllListeners();
btn_HuiQi.onClick.RemoveAllListeners();
btn_HuiQi.onClick.AddListener(RequestUndoChess);
btn_QiuHe.onClick.AddListener(() => btn_QiuHe.onClick.AddListener(() =>
{ {
WebSocketSendList.GameOperationChineseChess(roomData.roomId,1,GameManager.Instance.user.BaseInfo.number); WebSocketSendList.GameOperationChineseChess(roomData.roomId,1,GameManager.Instance.user.BaseInfo.number);
@@ -397,6 +418,254 @@ public class ChineseChessMainPanel : GameMainPanel_Base
}); });
} }
#region 象棋对局(普通管理类统一在面板控制)
/// <summary>象棋对局总管理器(普通类)</summary>
private ChessGameManager chessGameManager;
/// <summary>运行时自动生成的棋盘(用于退出时销毁)</summary>
private RectTransform autoChessBoardRect;
/// <summary>
/// 开始一局象棋(双方准备完毕,InitRoomData 里调用)
/// 所有规则/走法本地运算(帧同步),后端只透传数据与结算胜负
/// </summary>
private void StartChessGame()
{
if (roomData == null || roomData.users == null) return;
// 我的阵营:RedisGameUser.type 1 黑方 2 红方
var me = roomData.users.Find(u => u.userId == GameManager.Instance.user.BaseInfo.number);
ChessCamp myCamp = me != null ? (ChessCamp)me.type : ChessCamp.Red;
chessGameManager = new ChessGameManager();
chessGameManager.OnMoveApplied += OnChessMoveApplied;
chessGameManager.OnGameOver += OnChessGameOver;
chessGameManager.OnTurnChanged += OnChessTurnChanged; // 要在 StartGame 前订阅(开局红先会触发一次)
chessGameManager.StartGame(myCamp);
if (chessBoard == null) CreateDefaultChessBoard();
chessBoard.Init(chessGameManager, myCamp);
}
/// <summary>面板上没拖棋盘控件时,自动生成一个(不依赖任何预制体/资源,定位点也自动建好)</summary>
private void CreateDefaultChessBoard()
{
var go = new GameObject("ChessBoard_Auto", typeof(RectTransform));
var rt = go.GetComponent<RectTransform>();
rt.SetParent(transform, false);
var prt = (RectTransform)transform;
float pw = prt.rect.width > 10f ? prt.rect.width : 1080f;
float ph = prt.rect.height > 10f ? prt.rect.height : 1920f;
float step = Mathf.Min(pw * 0.96f / 9f, ph * 0.88f / 10.1f);
rt.anchorMin = rt.anchorMax = new Vector2(0.5f, 0.5f);
rt.anchoredPosition = new Vector2(0f, -step * 0.4f); // 稍微下移,避开上方对手信息
rt.sizeDelta = new Vector2(step * 9f, step * 10.1f);
chessBoard = go.AddComponent<UIChessBoard>();
// 自动生成时:代码自建两个定位点(逻辑 (0,4) 与 (0,5),网格铺满棋盘区域)
// 逻辑 (0,4) = (-4*step, -0.5*step),逻辑 (0,5) = (-4*step, +0.5*step)(棋盘中心为原点)
var ps = new GameObject("Point_Start", typeof(RectTransform)).GetComponent<RectTransform>();
ps.SetParent(rt, false);
ps.anchoredPosition = new Vector2(-4f * step, -0.5f * step);
var pe = new GameObject("Point_End", typeof(RectTransform)).GetComponent<RectTransform>();
pe.SetParent(rt, false);
pe.anchoredPosition = new Vector2(-4f * step, 0.5f * step);
chessBoard.point_Start = ps;
chessBoard.point_End = pe;
autoChessBoardRect = rt;
}
/// <summary>本地走子成功 → 帧同步给对方(走 SyncGameData 通道,后端只透传)</summary>
private void OnChessMoveApplied(ChessMoveEventArgs e)
{
if (!e.isLocal) return; // 对方同步过来的不回发
SendChessNetData(new ChessNetData { msgType = 1, move = e.move });
}
/// <summary>对局结束(本地规则判定)→ 上报后端结算 + 弹结果面板</summary>
private void OnChessGameOver(ChessCamp winner)
{
StopWaitCountdown(); // 对局结束,停走棋倒计时
bool iWin = winner == chessGameManager.myCamp;
if (iWin)
{
// 只有赢家上报(避免双端重复),EndGame 第二个参数为胜者 userId
WebSocketSendList.EndGameChineseChess(roomData.roomId, GameManager.Instance.user.BaseInfo.number);
subUIManager.ShowAsync(UIPanel.ZGXQWin);
}
else
{
subUIManager.ShowAsync(UIPanel.ZGXQDefeated);
}
}
/// <summary>悔棋按钮 → 走之前写好的 GameOperation 通道(1求和 2认输 3悔棋),对方确认后双方各悔一步</summary>
private void RequestUndoChess()
{
if (chessGameManager == null || chessGameManager.isGameOver) return;
if (chessGameManager.recorder.Count == 0)
{
if (chessBoard != null) chessBoard.ShowToast("暂无可悔的棋步");
return;
}
WebSocketSendList.GameOperationChineseChess(roomData.roomId, 3, GameManager.Instance.user.BaseInfo.number);
if (chessBoard != null) chessBoard.ShowToast("已发送悔棋请求");
}
/// <summary>同意对方的悔棋请求(UIChineseChessHint 的同意按钮调用):回执已由弹窗发送,这里本地悔一步</summary>
public void AgreeUndoChess()
{
if (chessGameManager == null) return;
chessGameManager.UndoOneStep();
}
/// <summary>收到对方同意悔棋的回执(IsShowHint type=4):本地悔一步</summary>
private void OnUndoAgreed()
{
if (chessGameManager == null) return;
chessGameManager.UndoOneStep();
if (chessBoard != null) chessBoard.ShowToast("对方同意悔棋");
}
#region 对局走棋倒计时(复用原有倒计时字段:waitCountdown / StopWaitCountdown / tmp_WaitTime_Bottom、Top)
/// <summary>每回合倒计时秒数(用服务端房间配置 timeoutSeconds,没配默认 60)</summary>
private int ChessTurnSeconds => roomData != null && roomData.timeoutSeconds > 0 ? roomData.timeoutSeconds : 60;
/// <summary>回合切换 → 重新开始走棋倒计时(当前回合方的信息栏显示)</summary>
private void OnChessTurnChanged(ChessCamp camp)
{
if (chessGameManager == null || chessGameManager.isGameOver) return;
bool myTurn = camp == chessGameManager.myCamp;
if (waitCountdown != null) StopCoroutine(waitCountdown);
waitCountdown = StartCoroutine(TurnCountdownRoutine(ChessTurnSeconds, myTurn));
}
/// <summary>
/// 走棋倒计时:轮到我 → 显示在下方(超时自动判负,走 EndGame 通道);
/// 轮到对方 → 显示在上方(对方客户端超时会自行上报,本地只显示)
/// </summary>
private IEnumerator TurnCountdownRoutine(int totalSeconds, bool myTurn)
{
int remaining = totalSeconds;
while (remaining >= 0)
{
string timeStr = $"{remaining / 60:D2}:{remaining % 60:D2}";
if (myTurn)
{
if (tmp_WaitTime_Bottom != null) tmp_WaitTime_Bottom.text = $"请走棋 {timeStr}";
if (tmp_WaitTime_Top != null) tmp_WaitTime_Top.text = "";
}
else
{
if (tmp_WaitTime_Top != null) tmp_WaitTime_Top.text = $"对方走棋 {timeStr}";
if (tmp_WaitTime_Bottom != null) tmp_WaitTime_Bottom.text = "";
}
yield return new WaitForSeconds(1f);
remaining--;
}
if (myTurn)
{
// 我方超时 → 自动判负(与认输同款 EndGame 通道,第二个参数为胜者 userId)
if (chessGameManager != null && !chessGameManager.isGameOver && roomData != null)
{
var opponent = roomData.users.Find(u => u.userId != GameManager.Instance.user.BaseInfo.number);
if (opponent != null)
{
WebSocketSendList.EndGameChineseChess(roomData.roomId, opponent.userId);
}
}
}
// 对方回合超时:由对方客户端上报(服务端也有 timeoutSeconds 兜底),本地只停表
}
#endregion
/// <summary>发送象棋帧同步数据(SyncGameData 通道)</summary>
private void SendChessNetData(ChessNetData data)
{
if (roomData == null || chessGameManager == null || data == null) return;
data.userId = GameManager.Instance.user.BaseInfo.number;
WebSocketSendList.SyncGameDataChineseChess(roomData.roomId, JsonConvert.SerializeObject(data));
}
/// <summary>
/// 收到 SyncGameData 推送(由 WebSocketManager_Message 的 SyncGameData 分支调用)
/// 兼容 arguments[0] = {"data":"..."} 与 arguments = [gameId, data] 两种回包格式
/// </summary>
public void OnChessNetData(string rawMsg)
{
if (chessGameManager == null) return;
try
{
var resp = JsonConvert.DeserializeObject<WebSocketResponseBase<Newtonsoft.Json.Linq.JToken>>(rawMsg);
if (resp == null || resp.arguments == null) return;
foreach (var arg in resp.arguments)
{
string dataStr = null;
if (arg.Type == Newtonsoft.Json.Linq.JTokenType.String
&& arg.ToString().TrimStart().StartsWith("{"))
{
dataStr = arg.ToString();
}
else if (arg.Type == Newtonsoft.Json.Linq.JTokenType.Object && arg["data"] != null)
{
dataStr = arg["data"].ToString();
}
if (!string.IsNullOrEmpty(dataStr)) HandleChessNetData(dataStr);
}
}
catch (Exception ex)
{
Debug.LogWarning("[ChineseChess] SyncGameData 解析失败: " + ex.Message);
}
}
/// <summary>处理对方发来的走棋帧(悔棋/认输/求和走 GameOperation 通道,不经过这里)</summary>
private void HandleChessNetData(string dataStr)
{
ChessNetData net;
try { net = JsonConvert.DeserializeObject<ChessNetData>(dataStr); }
catch { return; }
if (net == null || string.IsNullOrEmpty(net.userId)) return;
// 服务器回声/自己发的帧直接忽略
if (net.userId == GameManager.Instance.user.BaseInfo.number) return;
if (net.msgType == 1) // 对方走棋
{
chessGameManager.ApplyRemoteMove(net.move);
}
}
/// <summary>清理对局(面板隐藏时调用)</summary>
private void ClearChessGame()
{
if (chessGameManager != null)
{
chessGameManager.OnMoveApplied -= OnChessMoveApplied;
chessGameManager.OnGameOver -= OnChessGameOver;
chessGameManager.OnTurnChanged -= OnChessTurnChanged;
chessGameManager = null;
}
StopWaitCountdown(); // 停走棋倒计时
if (chessBoard != null) chessBoard.Clear();
if (autoChessBoardRect != null)
{
Destroy(autoChessBoardRect.gameObject);
autoChessBoardRect = null;
chessBoard = null;
}
}
#endregion
public void Start() public void Start()
{ {
@@ -461,6 +730,8 @@ public class ChineseChessMainPanel : GameMainPanel_Base
protected override void OnHide() protected override void OnHide()
{ {
base.OnHide(); base.OnHide();
// 清理象棋对局
ClearChessGame();
// 退出:播放 Close 动画后禁用 Spine // 退出:播放 Close 动画后禁用 Spine
PlaySpineAnim(animName_Close, false); PlaySpineAnim(animName_Close, false);
ActiveSpine(false); ActiveSpine(false);
@@ -51,6 +51,21 @@ public class UIChineseChessHint : SubUIBase
} }
} }
} }
else if (v.hintType == 3)
{
foreach (var item in v.roomData.users)
{
if (item.userId != GameManager.Instance.user.BaseInfo.number)
{
tmp_msg.text = $"<color=red>{item.userId}</color> 向您发起了悔棋请求";
targetID = item.userId;
TongYi.gameObject.SetActive(true);
JuJue.gameObject.SetActive(true);
QueRen.gameObject.SetActive(false);
QuXiao.gameObject.SetActive(false);
}
}
}
TongYi.onClick.RemoveAllListeners(); TongYi.onClick.RemoveAllListeners();
TongYi.onClick.AddListener(() => TongYi.onClick.AddListener(() =>
{ {
@@ -63,9 +78,17 @@ public class UIChineseChessHint : SubUIBase
} }
else if (v.hintType == 2) else if (v.hintType == 2)
{ {
WebSocketSendList.EndGameChineseChess(v.roomData.roomId, targetID); WebSocketSendList.EndGameChineseChess(v.roomData.roomId, targetID);
} }
else if (v.hintType == 3)
{
// 同意悔棋:回执对方(走 GameOperation 通道)+ 本地悔一步
WebSocketSendList.GameOperationChineseChess(v.roomData.roomId, 4, GameManager.Instance.user.BaseInfo.number);
var mainPanel = UIManager.Instance.Get<ChineseChessMainPanel>(UIPanel.MainGamePanelZGXQ);
if (mainPanel != null) mainPanel.AgreeUndoChess();
uIManager.Hide(UIPanel.ZGXQHint);
}
}); });
@@ -91,6 +114,11 @@ public class UIChineseChessHint : SubUIBase
JuJue.onClick.AddListener(() => JuJue.onClick.AddListener(() =>
{ {
//WebSocketSendList.EndGameChineseChess(v.roomData.roomId, targetID); //WebSocketSendList.EndGameChineseChess(v.roomData.roomId, targetID);
if (v.hintType == 3)
{
// 拒绝悔棋:回执对方(走 GameOperation 通道)
WebSocketSendList.GameOperationChineseChess(v.roomData.roomId, 5, GameManager.Instance.user.BaseInfo.number);
}
uIManager.Hide(UIPanel.ZGXQHint); uIManager.Hide(UIPanel.ZGXQHint);
}); });
@@ -1688,10 +1688,10 @@ MonoBehaviour:
dalaba: {fileID: 0} dalaba: {fileID: 0}
zhanhuanka: {fileID: 0} zhanhuanka: {fileID: 0}
huojianpao: {fileID: 0} huojianpao: {fileID: 0}
obj_DaLaBaPanel: {fileID: 0} obj_DaLaBaPanel: {fileID: 3081326209000850698}
tmp_DaLaBaInput: {fileID: 0} tmp_DaLaBaInput: {fileID: 1093531695052846095}
btn_DaLaBaSend: {fileID: 0} btn_DaLaBaSend: {fileID: 737128483515892074}
btn_DaLaBaClose: {fileID: 0} btn_DaLaBaClose: {fileID: 6051749251440295509}
btn_SettingList: {fileID: 8183400499693274360} btn_SettingList: {fileID: 8183400499693274360}
SittingListParent: {fileID: 3985212453111435068} SittingListParent: {fileID: 3985212453111435068}
btn_TuJian: {fileID: 8299373129192596900} btn_TuJian: {fileID: 8299373129192596900}
@@ -3991,7 +3991,7 @@ PrefabInstance:
- target: {fileID: 5494969937974881520, guid: 6c8512965de208f498306fbdfeb8eb5b, - target: {fileID: 5494969937974881520, guid: 6c8512965de208f498306fbdfeb8eb5b,
type: 3} type: 3}
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: -262.72168 value: 111.8
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 6114408877341087527, guid: 6c8512965de208f498306fbdfeb8eb5b, - target: {fileID: 6114408877341087527, guid: 6c8512965de208f498306fbdfeb8eb5b,
type: 3} type: 3}
@@ -4873,6 +4873,18 @@ PrefabInstance:
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: [] m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, type: 3} m_SourcePrefab: {fileID: 100100000, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, type: 3}
--- !u!114 &737128483515892074 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4911475361077518611, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 5626085150536392825}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &911966240696267575 stripped --- !u!114 &911966240696267575 stripped
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4806513792702419790, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, m_CorrespondingSourceObject: {fileID: 4806513792702419790, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
@@ -4885,6 +4897,18 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!114 &1093531695052846095 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4701441260149478518, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 5626085150536392825}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1237163540679585098 stripped --- !u!1 &1237163540679585098 stripped
GameObject: GameObject:
m_CorrespondingSourceObject: {fileID: 6861400117117127987, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, m_CorrespondingSourceObject: {fileID: 6861400117117127987, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
@@ -4915,6 +4939,12 @@ GameObject:
type: 3} type: 3}
m_PrefabInstance: {fileID: 5626085150536392825} m_PrefabInstance: {fileID: 5626085150536392825}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &3081326209000850698 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7264534340452394355, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 5626085150536392825}
m_PrefabAsset: {fileID: 0}
--- !u!114 &3213021335351199576 stripped --- !u!114 &3213021335351199576 stripped
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7099132353713170209, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, m_CorrespondingSourceObject: {fileID: 7099132353713170209, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
@@ -4975,6 +5005,18 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!114 &6051749251440295509 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 2157223412580736556, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 5626085150536392825}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &6558852404690691716 stripped --- !u!114 &6558852404690691716 stripped
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 1519515319374989053, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, m_CorrespondingSourceObject: {fileID: 1519515319374989053, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
@@ -6367,11 +6409,6 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: 'Setting ' value: 'Setting '
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 5754269309123817730, guid: 87a141ee6b07c324b91593c88bd1db9c,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c, - target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c,
type: 3} type: 3}
propertyPath: m_Pivot.x propertyPath: m_Pivot.x
@@ -6450,12 +6487,12 @@ PrefabInstance:
- target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c, - target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c,
type: 3} type: 3}
propertyPath: m_AnchoredPosition.x propertyPath: m_AnchoredPosition.x
value: 128.5 value: 142
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c, - target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c,
type: 3} type: 3}
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: -169.49991 value: -235
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c, - target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c,
type: 3} type: 3}
@@ -322,7 +322,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
foreach (var item in list_Sits) foreach (var item in list_Sits)
{ {
if (item.posID == roomJoinNotice.position) if (item.posID == roomJoinNotice.Position)
{ {
currSitData = item; currSitData = item;
// ⭐ 长按本地座位的 img_OpenPT 开关炮台面板(与 btn_ChangeTurret 同逻辑) // ⭐ 长按本地座位的 img_OpenPT 开关炮台面板(与 btn_ChangeTurret 同逻辑)
@@ -353,10 +353,10 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
} }
else else
{ {
var targetSit = list_Sits.Find(s => s.posID == roomJoinNotice.position); var targetSit = list_Sits.Find(s => s.posID == roomJoinNotice.Position);
// ⭐ 优先用后端 isBot 字段判断,兼容 userId.StartsWith("bot_") // ⭐ 优先用后端 isBot 字段判断,兼容 userId.StartsWith("bot_")
bool isBotJoin = roomJoinNotice.isBot || bool isBotJoin = roomJoinNotice.IsBot ||
(!string.IsNullOrEmpty(roomJoinNotice.userId) && roomJoinNotice.userId.StartsWith("bot_")); (!string.IsNullOrEmpty(roomJoinNotice.UserId) && roomJoinNotice.UserId.StartsWith("bot_"));
if (isBotJoin) if (isBotJoin)
{ {
@@ -376,7 +376,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
// 新玩家资源加载完毕后会主动发 requestSyncFish, // 新玩家资源加载完毕后会主动发 requestSyncFish,
// 房主收到后才广播场上活鱼(避免新玩家还没加载完就收包丢失) // 房主收到后才广播场上活鱼(避免新玩家还没加载完就收包丢失)
} }
JoinGame(roomJoinNotice.position, roomJoinNotice.gold, roomJoinNotice.diamond, roomJoinNotice.cannonMultiple, 0, roomJoinNotice.userId, roomJoinNotice.cannonId, roomJoinNotice.wingsId, roomJoinNotice.warGodId); JoinGame(roomJoinNotice.Position, roomJoinNotice.Gold, roomJoinNotice.Diamond, roomJoinNotice.CannonMultiple, 0, roomJoinNotice.UserId, roomJoinNotice.CannonId, roomJoinNotice.WingsId, roomJoinNotice.WarGodId);
} }
@@ -612,8 +612,8 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
if (open) if (open)
{ {
BuildPropList(); BuildPropList();
// ⭐ 数量是动态数据:每次打开面板都刷新一级角标(构建有一次性守卫,刷新无守卫) // ⭐ 数量是动态数据:每次打开面板拉最新背包再刷新(刮刮卡等面板内刮出/消耗的道具也能同步)
RefreshPropFirstLayerCounts(); RefreshPropCounts();
} }
else else
ClosePropTwo(); // 关道具面板时一并收起二层并重置展开状态 ClosePropTwo(); // 关道具面板时一并收起二层并重置展开状态
@@ -1552,6 +1552,26 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
/// <summary>二层冷却截止时刻(Time.time,全局一个):使用任意二层道具后所有二层道具一起倒计时;列表重建后据此恢复显示</summary> /// <summary>二层冷却截止时刻(Time.time,全局一个):使用任意二层道具后所有二层道具一起倒计时;列表重建后据此恢复显示</summary>
private float _propTwoCooldownEnd; private float _propTwoCooldownEnd;
/// <summary>
/// 刷新所有道具数量显示:默认先 GetUser 拉最新背包(服务端已扣/已发)再刷一级角标 + 二层列表;
/// fetchUser=false 用于已在 GetUser 回调内的场景(数据已最新,避免重复请求)。
/// </summary>
private void RefreshPropCounts(bool fetchUser = true)
{
if (fetchUser)
{
APIRequestList.GetUser((user) =>
{
if (user != null)
GameManager.Instance.UpdataUserData(user);
RefreshPropCounts(false);
});
return;
}
RefreshPropFirstLayerCounts();
RebuildPropTwo();
}
/// <summary>刷新一级道具 child0 数量:该类型在道具表里只有 1 个道具(只有第一层、点击直达使用)时直接显示具体数量(为 0 就显示 0); /// <summary>刷新一级道具 child0 数量:该类型在道具表里只有 1 个道具(只有第一层、点击直达使用)时直接显示具体数量(为 0 就显示 0);
/// 能展开二层的一级项(道具表里有多个道具)显示空</summary> /// 能展开二层的一级项(道具表里有多个道具)显示空</summary>
private void RefreshPropFirstLayerCounts() private void RefreshPropFirstLayerCounts()
@@ -1636,6 +1656,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
{ {
ClosePropTwo(); // 顺带关掉可能开着的其它二层 ClosePropTwo(); // 顺带关掉可能开着的其它二层
UsePropEffect(single); UsePropEffect(single);
RefreshPropCounts(); // ⭐ 使用后拉最新背包,刷新所有道具数量显示
return; return;
} }
} }
@@ -1714,6 +1735,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
} }
StartPropTwoCooldown(); // 使用后二层所有道具一起进入 5 秒冷却 StartPropTwoCooldown(); // 使用后二层所有道具一起进入 5 秒冷却
UsePropEffect(backend); UsePropEffect(backend);
RefreshPropCounts(); // ⭐ 使用后拉最新背包,刷新所有道具数量显示
} }
/// <summary>二层是否在冷却中(全局冷却:使用任意二层道具后所有二层道具一起倒计时)</summary> /// <summary>二层是否在冷却中(全局冷却:使用任意二层道具后所有二层道具一起倒计时)</summary>
@@ -1792,17 +1814,16 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
// 游戏内简化为一次使用1个(背包里支持滑条选数量) // 游戏内简化为一次使用1个(背包里支持滑条选数量)
var typeName = string.IsNullOrEmpty(p.name) ? PropEnum.VIP经验.ToString() : p.name; var typeName = string.IsNullOrEmpty(p.name) ? PropEnum.VIP经验.ToString() : p.name;
APIRequestList.UseVipExp(1, (result) => APIRequestList.UseVipExp(1, (result) =>
{
UIManager.Instance.ShowBoardError(string.IsNullOrEmpty(result) ? "使用成功" : result);
// 刷新用户数据,同步道具数量与VIP经验
APIRequestList.GetUser((user) =>
{ {
if (user != null) UIManager.Instance.ShowBoardError(string.IsNullOrEmpty(result) ? "使用成功" : result);
GameManager.Instance.UpdataUserData(user); // 刷新用户数据,同步道具数量与VIP经验
RefreshPropFirstLayerCounts(); // 数量变化后同步刷新一级角标 APIRequestList.GetUser((user) =>
RebuildPropTwo(); // 二层开着的话同步刷新显示数量 {
if (user != null)
GameManager.Instance.UpdataUserData(user);
RefreshPropCounts(false); // 数据已最新:刷新一级角标 + 二层数量显示
});
}); });
});
//UIManager.Instance.ShowTiShi($"确定使用1个{typeName}吗?", () => //UIManager.Instance.ShowTiShi($"确定使用1个{typeName}吗?", () =>
//{ //{
// APIRequestList.UseVipExp(1, (result) => // APIRequestList.UseVipExp(1, (result) =>
@@ -1912,8 +1933,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
{ {
if (user != null) if (user != null)
GameManager.Instance.UpdataUserData(user); GameManager.Instance.UpdataUserData(user);
RefreshPropFirstLayerCounts(); // 鱼雷库存已扣,刷新一级角标 RefreshPropCounts(false); // 数据已最新:刷新一级角标 + 二层数量显示
RebuildPropTwo(); // 二层开着的话同步刷新数量
}); });
} }
} }
@@ -3220,6 +3240,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
} }
} }
/// <summary>锁定图标 lockFX 固定 z 轴(相机 z=-500、爆奖特效 z=-100,lockFX 在爆奖前面取 -50;图片在子对象上带 z 偏移,太靠近相机会被近平面裁掉)</summary>
private const float LockFXFixedZ = -50f;
private void UpdateSingleLockFX(SitPosData sit, MonsterContral monster, Transform hitPos, GameObject icon) private void UpdateSingleLockFX(SitPosData sit, MonsterContral monster, Transform hitPos, GameObject icon)
{ {
// ⭐ 核心原则:鱼还活着就显示图标,鱼死了才隐藏 // ⭐ 核心原则:鱼还活着就显示图标,鱼死了才隐藏
@@ -3242,7 +3265,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
} }
if (!icon.activeSelf) icon.SetActive(true); if (!icon.activeSelf) icon.SetActive(true);
pos.z = Camera.main.transform.position.z + 1; // ⭐ z 轴固定 -50:图片在子对象上带 z 偏移,太靠近相机(如相机前1格)会被近平面裁掉;
// 相机 z=-500、爆奖特效 z=-100,-50 在爆奖前面位置正合适
pos.z = LockFXFixedZ;
icon.transform.position = pos; icon.transform.position = pos;
} }
private void CheckLockTargetValid() private void CheckLockTargetValid()
@@ -3336,8 +3361,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
if (currSitData.lockFX != null && target.gameObject.activeInHierarchy) if (currSitData.lockFX != null && target.gameObject.activeInHierarchy)
{ {
if (!currSitData.lockFX.activeSelf) currSitData.lockFX.SetActive(true); if (!currSitData.lockFX.activeSelf) currSitData.lockFX.SetActive(true);
Vector3 p = lockTr.position; // ⭐ z 轴固定 -50(与每帧 UpdateSingleLockFX 一致):在爆奖特效(z=-100)前面
p.z = Camera.main.transform.position.z + 1; var p = lockTr.position;
p.z = LockFXFixedZ;
currSitData.lockFX.transform.position = p; currSitData.lockFX.transform.position = p;
} }
} }
@@ -4126,7 +4152,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
// (RoomChangeResponse 用户列表,RoomInfo 消息下发),按 userId 查询 // (RoomChangeResponse 用户列表,RoomInfo 消息下发),按 userId 查询
var playerInfo = GameManager.Instance.gameData?.currRoomData?.players? var playerInfo = GameManager.Instance.gameData?.currRoomData?.players?
.Find(p => p.userId == sit.user); .Find(p => p.userId == sit.user);
sit.SetUserInfo(sit.user, playerInfo?.userName, playerInfo?.avatar, playerInfo?.vipLevel ?? 0); sit.SetUserInfo(sit.user, playerInfo?.userName, playerInfo?.avatar, playerInfo?.vipLevel ?? 0, playerInfo?.userNumber);
// ⭐ 记录金币流水:已加钱(进房设置初始金币,本地已执行) // ⭐ 记录金币流水:已加钱(进房设置初始金币,本地已执行)
GameManager.LogGoldFlowAppliedGain("JoinGame", $"座位={sitNum} 初始金币={goldNum} 钻石={diamondNum} 炮台消耗={consumeGold} 房间={GameManager.Instance.gameData?.currRoomData?.roomId}"); GameManager.LogGoldFlowAppliedGain("JoinGame", $"座位={sitNum} 初始金币={goldNum} 钻石={diamondNum} 炮台消耗={consumeGold} 房间={GameManager.Instance.gameData?.currRoomData?.roomId}");
@@ -1907,10 +1907,10 @@ MonoBehaviour:
dalaba: {fileID: 0} dalaba: {fileID: 0}
zhanhuanka: {fileID: 0} zhanhuanka: {fileID: 0}
huojianpao: {fileID: 0} huojianpao: {fileID: 0}
obj_DaLaBaPanel: {fileID: 0} obj_DaLaBaPanel: {fileID: 1734655381547348006}
tmp_DaLaBaInput: {fileID: 0} tmp_DaLaBaInput: {fileID: 4466633453303021859}
btn_DaLaBaSend: {fileID: 0} btn_DaLaBaSend: {fileID: 4101482175202341958}
btn_DaLaBaClose: {fileID: 0} btn_DaLaBaClose: {fileID: 7002406776894393209}
btn_SettingList: {fileID: 8423880718232560262} btn_SettingList: {fileID: 8423880718232560262}
SittingListParent: {fileID: 3618840318454065474} SittingListParent: {fileID: 3618840318454065474}
btn_TuJian: {fileID: 8528602079873795034} btn_TuJian: {fileID: 8528602079873795034}
@@ -6426,6 +6426,11 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7264534340452394355, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7942853405418363685, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, - target: {fileID: 7942853405418363685, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3} type: 3}
propertyPath: m_AnchorMax.y propertyPath: m_AnchorMax.y
@@ -6457,6 +6462,12 @@ GameObject:
type: 3} type: 3}
m_PrefabInstance: {fileID: 8989876033869305173} m_PrefabInstance: {fileID: 8989876033869305173}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &1734655381547348006 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7264534340452394355, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 8989876033869305173}
m_PrefabAsset: {fileID: 0}
--- !u!114 &2181813545356604020 stripped --- !u!114 &2181813545356604020 stripped
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7099132353713170209, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, m_CorrespondingSourceObject: {fileID: 7099132353713170209, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
@@ -6493,6 +6504,30 @@ RectTransform:
type: 3} type: 3}
m_PrefabInstance: {fileID: 8989876033869305173} m_PrefabInstance: {fileID: 8989876033869305173}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!114 &4101482175202341958 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4911475361077518611, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 8989876033869305173}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &4466633453303021859 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4701441260149478518, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 8989876033869305173}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &4500888554953033243 stripped --- !u!114 &4500888554953033243 stripped
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4806513792702419790, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, m_CorrespondingSourceObject: {fileID: 4806513792702419790, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
@@ -6553,6 +6588,18 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!114 &7002406776894393209 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 2157223412580736556, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 8989876033869305173}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &7026078867861418950 stripped --- !u!114 &7026078867861418950 stripped
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 2108758979454822035, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, m_CorrespondingSourceObject: {fileID: 2108758979454822035, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
File diff suppressed because it is too large Load Diff
@@ -3883,10 +3883,10 @@ MonoBehaviour:
dalaba: {fileID: 0} dalaba: {fileID: 0}
zhanhuanka: {fileID: 0} zhanhuanka: {fileID: 0}
huojianpao: {fileID: 0} huojianpao: {fileID: 0}
obj_DaLaBaPanel: {fileID: 0} obj_DaLaBaPanel: {fileID: 5192004767366045538}
tmp_DaLaBaInput: {fileID: 0} tmp_DaLaBaInput: {fileID: 7918353195504856679}
btn_DaLaBaSend: {fileID: 0} btn_DaLaBaSend: {fileID: 7562787855113493250}
btn_DaLaBaClose: {fileID: 0} btn_DaLaBaClose: {fileID: 3545042015164146749}
btn_SettingList: {fileID: 542828182532005264} btn_SettingList: {fileID: 542828182532005264}
SittingListParent: {fileID: 4708396459282093652} SittingListParent: {fileID: 4708396459282093652}
btn_TuJian: {fileID: 375082849015872716} btn_TuJian: {fileID: 375082849015872716}
@@ -7887,9 +7887,15 @@ MonoBehaviour:
img_OpenPT: {fileID: 0} img_OpenPT: {fileID: 0}
IsBaoJiangingActive: 0 IsBaoJiangingActive: 0
obj_BaoJiangZhongPanelPosition: {fileID: 0} obj_BaoJiangZhongPanelPosition: {fileID: 0}
user:
posID: 0 posID: 0
isBot: 0 isBot: 0
user:
tmp_UserNumber: {fileID: 0}
tmp_UserName: {fileID: 0}
img_Head: {fileID: 0}
img_Vip: {fileID: 0}
sprite_VipList: []
sprite_VipLevelBG: []
goldNum: 0 goldNum: 0
consumeGoldNum: 0 consumeGoldNum: 0
tMP_GoldNum: {fileID: 415724694880221988} tMP_GoldNum: {fileID: 415724694880221988}
@@ -8107,9 +8113,15 @@ MonoBehaviour:
img_OpenPT: {fileID: 0} img_OpenPT: {fileID: 0}
IsBaoJiangingActive: 0 IsBaoJiangingActive: 0
obj_BaoJiangZhongPanelPosition: {fileID: 0} obj_BaoJiangZhongPanelPosition: {fileID: 0}
user:
posID: 1 posID: 1
isBot: 0 isBot: 0
user:
tmp_UserNumber: {fileID: 0}
tmp_UserName: {fileID: 0}
img_Head: {fileID: 0}
img_Vip: {fileID: 0}
sprite_VipList: []
sprite_VipLevelBG: []
goldNum: 0 goldNum: 0
consumeGoldNum: 0 consumeGoldNum: 0
tMP_GoldNum: {fileID: 1085753103380507267} tMP_GoldNum: {fileID: 1085753103380507267}
@@ -13586,6 +13598,48 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!114 &3545042015164146749 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 2157223412580736556, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 3232876092691216913}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &5192004767366045538 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7264534340452394355, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 3232876092691216913}
m_PrefabAsset: {fileID: 0}
--- !u!114 &7562787855113493250 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4911475361077518611, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 3232876092691216913}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &7918353195504856679 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4701441260149478518, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
type: 3}
m_PrefabInstance: {fileID: 3232876092691216913}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &8351341256523216674 stripped --- !u!1 &8351341256523216674 stripped
GameObject: GameObject:
m_CorrespondingSourceObject: {fileID: 6861400117117127987, guid: e5efa9f179bbfdb4ba8e73fe85eb109a, m_CorrespondingSourceObject: {fileID: 6861400117117127987, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
@@ -13610,20 +13664,42 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: Game177_Lock value: Game177_Lock
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1709254077376921, guid: 3d7a2eb901865174aab8a696e060d045, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1709254077376921, guid: 3d7a2eb901865174aab8a696e060d045, type: 3} - target: {fileID: 1709254077376921, guid: 3d7a2eb901865174aab8a696e060d045, type: 3}
propertyPath: m_IsActive propertyPath: m_IsActive
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1724804207875695, guid: 3d7a2eb901865174aab8a696e060d045, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1730242686860875, guid: 3d7a2eb901865174aab8a696e060d045, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 212243736805655561, guid: 3d7a2eb901865174aab8a696e060d045, - target: {fileID: 212243736805655561, guid: 3d7a2eb901865174aab8a696e060d045,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 212243736805655561, guid: 3d7a2eb901865174aab8a696e060d045,
type: 3}
propertyPath: m_SortingOrder
value: 1001
objectReference: {fileID: 0}
- target: {fileID: 212587765826080250, guid: 3d7a2eb901865174aab8a696e060d045, - target: {fileID: 212587765826080250, guid: 3d7a2eb901865174aab8a696e060d045,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 212587765826080250, guid: 3d7a2eb901865174aab8a696e060d045,
type: 3}
propertyPath: m_SortingOrder
value: 1001
objectReference: {fileID: 0}
- target: {fileID: 224618682377417806, guid: 3d7a2eb901865174aab8a696e060d045, - target: {fileID: 224618682377417806, guid: 3d7a2eb901865174aab8a696e060d045,
type: 3} type: 3}
propertyPath: m_Pivot.x propertyPath: m_Pivot.x
@@ -13845,10 +13921,22 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: Game177_LockOther value: Game177_LockOther
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1709254077376921, guid: 2fefedf061efaba40afa85543d55ca2e, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1709254077376921, guid: 2fefedf061efaba40afa85543d55ca2e, type: 3} - target: {fileID: 1709254077376921, guid: 2fefedf061efaba40afa85543d55ca2e, type: 3}
propertyPath: m_IsActive propertyPath: m_IsActive
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1724804207875695, guid: 2fefedf061efaba40afa85543d55ca2e, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1730242686860875, guid: 2fefedf061efaba40afa85543d55ca2e, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4618682377417806, guid: 2fefedf061efaba40afa85543d55ca2e, type: 3} - target: {fileID: 4618682377417806, guid: 2fefedf061efaba40afa85543d55ca2e, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: 0 value: 0
@@ -13894,11 +13982,21 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 212061268324235159, guid: 2fefedf061efaba40afa85543d55ca2e,
type: 3}
propertyPath: m_SortingOrder
value: 1000
objectReference: {fileID: 0}
- target: {fileID: 212099118695303065, guid: 2fefedf061efaba40afa85543d55ca2e, - target: {fileID: 212099118695303065, guid: 2fefedf061efaba40afa85543d55ca2e,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 212099118695303065, guid: 2fefedf061efaba40afa85543d55ca2e,
type: 3}
propertyPath: m_SortingOrder
value: 1000
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
+40
View File
@@ -253,6 +253,11 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2820597448544805160, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3}
propertyPath: m_LocalScale.y
value: -1
objectReference: {fileID: 0}
- target: {fileID: 2925422125526734773, guid: 509192cd5f627cf409a54e9be694a24d, - target: {fileID: 2925422125526734773, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
@@ -353,6 +358,21 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4060562825933674813, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3}
propertyPath: m_LocalScale.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4060562825933674813, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3}
propertyPath: m_LocalScale.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4060562825933674813, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3}
propertyPath: m_LocalScale.z
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4086152315555094515, guid: 509192cd5f627cf409a54e9be694a24d, - target: {fileID: 4086152315555094515, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
@@ -473,6 +493,11 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4843941669050715073, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 128
objectReference: {fileID: 0}
- target: {fileID: 4874233463245360906, guid: 509192cd5f627cf409a54e9be694a24d, - target: {fileID: 4874233463245360906, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
@@ -768,6 +793,21 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7782089659438206966, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3}
propertyPath: m_LocalScale.y
value: -1
objectReference: {fileID: 0}
- target: {fileID: 7782089659438206966, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3}
propertyPath: m_AnchoredPosition.y
value: -73.5
objectReference: {fileID: 0}
- target: {fileID: 7782089659438206966, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3}
propertyPath: m_ConstrainProportionsScale
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7814522285136084044, guid: 509192cd5f627cf409a54e9be694a24d, - target: {fileID: 7814522285136084044, guid: 509192cd5f627cf409a54e9be694a24d,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
+20
View File
@@ -93,6 +93,21 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1367620504699206675, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_LocalScale.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1367620504699206675, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_LocalScale.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1367620504699206675, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_LocalScale.z
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1488419584990204227, guid: c9c177e60fd350e49844955f7e8a5874, - target: {fileID: 1488419584990204227, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
@@ -553,6 +568,11 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7609364501153394415, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 222
objectReference: {fileID: 0}
- target: {fileID: 7702690943730251830, guid: c9c177e60fd350e49844955f7e8a5874, - target: {fileID: 7702690943730251830, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
+50
View File
@@ -78,6 +78,11 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 973905160343307270, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_LocalScale.y
value: -1
objectReference: {fileID: 0}
- target: {fileID: 1138529054820578357, guid: c9c177e60fd350e49844955f7e8a5874, - target: {fileID: 1138529054820578357, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
@@ -443,6 +448,36 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4710570228793354968, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_LocalScale.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4710570228793354968, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_LocalScale.y
value: -1
objectReference: {fileID: 0}
- target: {fileID: 4710570228793354968, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_LocalScale.z
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4710570228793354968, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 114.9
objectReference: {fileID: 0}
- target: {fileID: 4710570228793354968, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_AnchoredPosition.y
value: -73.1
objectReference: {fileID: 0}
- target: {fileID: 4710570228793354968, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_ConstrainProportionsScale
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4948902458849928676, guid: c9c177e60fd350e49844955f7e8a5874, - target: {fileID: 4948902458849928676, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3} type: 3}
propertyPath: m_Enabled propertyPath: m_Enabled
@@ -533,6 +568,11 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 5582150539513036327, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_LocalScale.y
value: -1
objectReference: {fileID: 0}
- target: {fileID: 5663993776979783327, guid: c9c177e60fd350e49844955f7e8a5874, - target: {fileID: 5663993776979783327, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3} type: 3}
propertyPath: m_Enabled propertyPath: m_Enabled
@@ -648,6 +688,11 @@ PrefabInstance:
propertyPath: m_SizeDelta.y propertyPath: m_SizeDelta.y
value: 373.17285 value: 373.17285
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 6916578527196273495, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_LocalScale.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6916578527196273495, guid: c9c177e60fd350e49844955f7e8a5874, - target: {fileID: 6916578527196273495, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3} type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@@ -783,6 +828,11 @@ PrefabInstance:
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7609364501153394415, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 126.7
objectReference: {fileID: 0}
- target: {fileID: 7702690943730251830, guid: c9c177e60fd350e49844955f7e8a5874, - target: {fileID: 7702690943730251830, guid: c9c177e60fd350e49844955f7e8a5874,
type: 3} type: 3}
propertyPath: m_SortingLayer propertyPath: m_SortingLayer
@@ -11,8 +11,7 @@ Material:
m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3}
m_Parent: {fileID: 0} m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0 m_ModifiedSerializedProperties: 0
m_ValidKeywords: m_ValidKeywords: []
- OUTLINE_ON
m_InvalidKeywords: [] m_InvalidKeywords: []
m_LightmapFlags: 1 m_LightmapFlags: 1
m_EnableInstancingVariants: 0 m_EnableInstancingVariants: 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

@@ -0,0 +1,853 @@
fileFormatVersion: 2
guid: 1b142012a72db0d41a9f63afbeccb5c8
TextureImporter:
internalIDToNameTable:
- first:
213: 21300000
second: Chess_0
- first:
213: 21300002
second: Chess_1
- first:
213: 21300004
second: Chess_2
- first:
213: 21300006
second: Chess_3
- first:
213: 21300008
second: Chess_5
- first:
213: 21300010
second: Chess_6
- first:
213: 21300012
second: Chess_7
- first:
213: 21300014
second: Chess_8
- first:
213: 21300016
second: Chess_9
- first:
213: 21300018
second: Chess_11
- first:
213: 21300020
second: Chess_16
- first:
213: 21300022
second: Chess_17
- first:
213: 21300024
second: Chess_21
- first:
213: 21300026
second: Chess_24
- first:
213: 21300028
second: Chess_29
- first:
213: 21300030
second: Chess_31
- first:
213: 21300032
second: Chess_40
- first:
213: 21300034
second: Chess_44
- first:
213: 21300036
second: Chess_45
- first:
213: 21300038
second: Chess_46
- first:
213: 21300040
second: Chess_47
- first:
213: 21300042
second: Chess_48
- first:
213: 21300044
second: Chess_49
- first:
213: 21300046
second: Chess_50
- first:
213: 21300048
second: Chess_51
- first:
213: 21300050
second: Chess_52
- first:
213: 21300052
second: Chess_53
- first:
213: 21300054
second: Chess_54
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 2
aniso: 4
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 1
swizzle: 50462976
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 4096
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 4096
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 4096
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 4096
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 4096
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: Chess_0
rect:
serializedVersion: 2
x: 1736
y: 1839
width: 80
height: 86
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: e8db53b8e8c214e4992791e1bd1a2de6
internalID: 21300000
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_1
rect:
serializedVersion: 2
x: 1817
y: 1917
width: 80
height: 87
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 4079a3e747fb7da4494e537a81d96749
internalID: 21300002
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_2
rect:
serializedVersion: 2
x: 1933
y: 1896
width: 80
height: 87
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 9485671459f5e2249832b3789a350ae9
internalID: 21300004
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_3
rect:
serializedVersion: 2
x: 1558
y: 1723
width: 177
height: 177
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 9b96840c68bec03489afebc1ab2eb0fb
internalID: 21300006
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_5
rect:
serializedVersion: 2
x: 1852
y: 1829
width: 80
height: 87
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 502a07d40bc1f06408f95bcf8d80b0be
internalID: 21300008
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_6
rect:
serializedVersion: 2
x: 1958
y: 1809
width: 80
height: 86
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 5ca8d1c973cb4624584ae5bc41d5b266
internalID: 21300010
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_7
rect:
serializedVersion: 2
x: 1736
y: 1723
width: 115
height: 115
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: d3d887d79a3a508429556d64ccc14866
internalID: 21300012
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_8
rect:
serializedVersion: 2
x: 1852
y: 1723
width: 105
height: 105
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: dee87a42af17b854f8d97f31f86c6997
internalID: 21300014
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_9
rect:
serializedVersion: 2
x: 1958
y: 1725
width: 83
height: 84
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 168b680fdf05d1b41869aacf15e6623e
internalID: 21300016
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_11
rect:
serializedVersion: 2
x: 1077
y: 882
width: 480
height: 848
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 876c2b40c89450b498ca0bc149a91b48
internalID: 21300018
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_16
rect:
serializedVersion: 2
x: 1558
y: 882
width: 480
height: 840
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: c5011fd093dda7c47b4313f3735820d7
internalID: 21300020
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_17
rect:
serializedVersion: 2
x: 91
y: 725
width: 247
height: 158
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 5cf891167e780f549a29924db8f87813
internalID: 21300022
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_21
rect:
serializedVersion: 2
x: 606
y: 718
width: 368
height: 177
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 3bca1fefc6bd74b419113ddd06aa3fa5
internalID: 21300024
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_24
rect:
serializedVersion: 2
x: 1077
y: 0
width: 720
height: 881
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 21c4bb466b0d0794fb989d9c6f69494b
internalID: 21300026
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_29
rect:
serializedVersion: 2
x: 36
y: 344
width: 358
height: 172
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 1f30661c8f288ea448396e12fc9d6433
internalID: 21300028
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_31
rect:
serializedVersion: 2
x: 606
y: 351
width: 470
height: 166
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 507b501b6e9fb7943a6fc8dc80c47e87
internalID: 21300030
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_40
rect:
serializedVersion: 2
x: 1960
y: 261
width: 75
height: 77
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 275a3c943c4d1f440865af13ac80cf90
internalID: 21300032
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_44
rect:
serializedVersion: 2
x: 1798
y: 175
width: 80
height: 87
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 73ed6cb52f544d744881cfc41090434e
internalID: 21300034
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_45
rect:
serializedVersion: 2
x: 1879
y: 175
width: 80
height: 87
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 19a6cb53207c7654c907fd204f2ba065
internalID: 21300036
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_46
rect:
serializedVersion: 2
x: 1960
y: 175
width: 80
height: 86
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 2682f0d6335187247b01a8ae75f85dfb
internalID: 21300038
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_47
rect:
serializedVersion: 2
x: 0
y: 0
width: 360
height: 135
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 45d7fa104dbef9e4c85bb9b1783998ea
internalID: 21300040
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_48
rect:
serializedVersion: 2
x: 612
y: 14
width: 357
height: 107
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: b3fe7de32c2e4e544896054f13c52f92
internalID: 21300042
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_49
rect:
serializedVersion: 2
x: 1798
y: 87
width: 80
height: 87
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: e7ed18c90b2357e4184a04ca651633c0
internalID: 21300044
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_50
rect:
serializedVersion: 2
x: 1879
y: 87
width: 80
height: 87
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 0aec6abdb99368f4aa3b97562bce8bc2
internalID: 21300046
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_51
rect:
serializedVersion: 2
x: 1960
y: 87
width: 80
height: 87
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 2cb01917091fd6a46b2ed64b829732a0
internalID: 21300048
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_52
rect:
serializedVersion: 2
x: 1797
y: 0
width: 81
height: 86
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 7deb629ad15cf4045808fd57bc8504cb
internalID: 21300050
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_53
rect:
serializedVersion: 2
x: 1879
y: 0
width: 80
height: 86
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: cbf953b8f3682c442baae6a1896d0a12
internalID: 21300052
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Chess_54
rect:
serializedVersion: 2
x: 1960
y: 0
width: 80
height: 86
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: c2cae1b07b78c90478a3723ce589f9a1
internalID: 21300054
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []
spriteID: 7cddd251157d3ff44926485e58a96acd
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable:
Chess_0: 21300000
Chess_1: 21300002
Chess_11: 21300018
Chess_16: 21300020
Chess_17: 21300022
Chess_2: 21300004
Chess_21: 21300024
Chess_24: 21300026
Chess_29: 21300028
Chess_3: 21300006
Chess_31: 21300030
Chess_40: 21300032
Chess_44: 21300034
Chess_45: 21300036
Chess_46: 21300038
Chess_47: 21300040
Chess_48: 21300042
Chess_49: 21300044
Chess_5: 21300008
Chess_50: 21300046
Chess_51: 21300048
Chess_52: 21300050
Chess_53: 21300052
Chess_54: 21300054
Chess_6: 21300010
Chess_7: 21300012
Chess_8: 21300014
Chess_9: 21300016
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 88d9b1d534e79ac4582720cace77a02c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 50ab58cb87ffe814e943b09f653f3f56
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 5acd3183ef1c3cb46bf905071009ae3a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 946d7904f5fdd3a4e823b3775974cd6f
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: aa1c709fab7782b47b60840abdbe7e90
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: a134bcd0f8e3efc408c973424af991e3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 7c866a33cb862f548a65aa1c3274f406
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 3aed2fc6b83510a4ba672d09594bd5e2
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 5305a1703a5323642b3b86d63733ec1f
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: e8015107f7560dd4497e45215551aaa8
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 5d47c5dbfe7cf264daf6fceb3287c2a3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: b49912e6fa9c2b64faea6a932cd96959
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: a2e8f44e334e5094eb493037b19848da
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: cb0aead37e7aa2048a841f83c4059566
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 6d20621ff3469ec49ae3879bb8244b72
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 00cb702f0bd22864784e62451d0d45e6
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 5171f0c84c630c645b0b86dce2f0b949
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

@@ -1,127 +0,0 @@
fileFormatVersion: 2
guid: 779bb25172e33754eae1cd5b9663b27a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More