1
@@ -662,7 +662,25 @@ MonoBehaviour:
|
||||
m_RotationOrder: 4
|
||||
m_MixOutCurve:
|
||||
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_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
@@ -806,7 +824,25 @@ MonoBehaviour:
|
||||
m_BlendOutDuration: -1
|
||||
m_MixInCurve:
|
||||
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_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
@@ -1523,7 +1559,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 15c38f6fa1940124db1ab7f6fe7268d1, type: 3}
|
||||
m_Name: Signal Emitter
|
||||
m_EditorClassIdentifier:
|
||||
m_Time: 38.516666666666666
|
||||
m_Time: 37.56925170068027
|
||||
m_Retroactive: 0
|
||||
m_EmitOnce: 0
|
||||
m_Asset: {fileID: 11400000, guid: 27ead056a3555a449b1c33be851ca0c5, type: 2}
|
||||
|
||||
@@ -24,6 +24,7 @@ MonoBehaviour:
|
||||
m_Markers:
|
||||
m_Objects:
|
||||
- {fileID: 52122530592584653}
|
||||
- {fileID: -3767978809465459993}
|
||||
--- !u!114 &-8410463078486255931
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
@@ -290,6 +291,22 @@ MonoBehaviour:
|
||||
searchHierarchy: 0
|
||||
active: 1
|
||||
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
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
|
||||
@@ -641,17 +641,32 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 5e5dca86a57fe2144a34f1f2ddb93962, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
beilv: 0
|
||||
guid:
|
||||
lastMoveLineId:
|
||||
monsterData:
|
||||
die_Score: 0
|
||||
isDie: 0
|
||||
fishTypeConfig:
|
||||
fishNumber:
|
||||
fishName:
|
||||
fishBrief:
|
||||
fishType: 0
|
||||
fishScore: 0
|
||||
killWeight: 0
|
||||
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}
|
||||
isSpine: 1
|
||||
fishTypeID: 13003
|
||||
@@ -659,6 +674,7 @@ MonoBehaviour:
|
||||
HP: 5
|
||||
effect_Die: {fileID: 0}
|
||||
effect_DieAward: {fileID: 0}
|
||||
currEffect_DieAward: {fileID: 0}
|
||||
isMove: 1
|
||||
is3D: 0
|
||||
forwordXYZ: X
|
||||
@@ -666,7 +682,20 @@ MonoBehaviour:
|
||||
moveTime: 0
|
||||
isyz: 0
|
||||
yzID:
|
||||
colliderList: []
|
||||
lockPoint: {fileID: 0}
|
||||
bingDongEffect: []
|
||||
needLockEvent: 0
|
||||
createVideoClip: {fileID: 0}
|
||||
rotationPY: 60
|
||||
useMirrorCompensate: 1
|
||||
baseMmove: 0
|
||||
isRotate: 1
|
||||
isNot1: 0
|
||||
ischild0: 0
|
||||
depthOffset: 0
|
||||
is2DFish: 0
|
||||
sortOrder2D: 0
|
||||
--- !u!1 &1709867586078768
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -866,17 +866,32 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 5e5dca86a57fe2144a34f1f2ddb93962, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
beilv: 0
|
||||
guid:
|
||||
lastMoveLineId:
|
||||
monsterData:
|
||||
die_Score: 0
|
||||
isDie: 0
|
||||
fishTypeConfig:
|
||||
fishNumber:
|
||||
fishName:
|
||||
fishBrief:
|
||||
fishType: 0
|
||||
fishScore: 0
|
||||
killWeight: 0
|
||||
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}
|
||||
isSpine: 1
|
||||
fishTypeID: 13006
|
||||
@@ -884,6 +899,7 @@ MonoBehaviour:
|
||||
HP: 5
|
||||
effect_Die: {fileID: 0}
|
||||
effect_DieAward: {fileID: 0}
|
||||
currEffect_DieAward: {fileID: 0}
|
||||
isMove: 1
|
||||
is3D: 0
|
||||
forwordXYZ: X
|
||||
@@ -891,7 +907,20 @@ MonoBehaviour:
|
||||
moveTime: 0
|
||||
isyz: 0
|
||||
yzID:
|
||||
colliderList: []
|
||||
lockPoint: {fileID: 0}
|
||||
bingDongEffect: []
|
||||
needLockEvent: 0
|
||||
createVideoClip: {fileID: 0}
|
||||
rotationPY: 60
|
||||
useMirrorCompensate: 1
|
||||
baseMmove: 0
|
||||
isRotate: 1
|
||||
isNot1: 0
|
||||
ischild0: 0
|
||||
depthOffset: 0
|
||||
is2DFish: 0
|
||||
sortOrder2D: 0
|
||||
--- !u!1 &1709867586078768
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -4311,9 +4311,9 @@ RectTransform:
|
||||
m_LocalScale: {x: 0, y: 0, z: 0}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1159290238}
|
||||
- {fileID: 1819495571}
|
||||
- {fileID: 3182697403238626235}
|
||||
- {fileID: 1159290238}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
|
||||
@@ -76,9 +76,12 @@ public class RoomPlayerInfo
|
||||
/// <summary>玩家 ID</summary>
|
||||
public string userId;
|
||||
|
||||
/// <summary>玩家昵称</summary>
|
||||
/// <summary>玩家名字</summary>
|
||||
public string userName;
|
||||
|
||||
/// <summary>玩家编号(短ID,游戏内显示用)</summary>
|
||||
public string userNumber;
|
||||
|
||||
/// <summary>头像 URL</summary>
|
||||
public string avatar;
|
||||
|
||||
|
||||
@@ -1,100 +1,116 @@
|
||||
using Assets.MyGame.Scripts.Net.WebResponses;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Assets.MyGame.Scripts.Net.WebResponses
|
||||
{
|
||||
/// <summary>
|
||||
/// 房间进入通知(RoomJoinNotice)
|
||||
/// 房间进入通知(RoomJoinNotice)—— 后端新版玩家数据
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class RoomJoinNotice
|
||||
{
|
||||
/// <summary>
|
||||
/// 玩家唯一 ID
|
||||
/// 玩家Id
|
||||
/// </summary>
|
||||
public string userId;
|
||||
public string UserId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 玩家昵称
|
||||
/// 玩家名字
|
||||
/// </summary>
|
||||
public string userName;
|
||||
public string UserName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 玩家头像 URL
|
||||
/// 玩家编号(短ID,游戏内显示用)
|
||||
/// </summary>
|
||||
public string avatar;
|
||||
public string UserNumber { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 是否红名(可能用于标识特殊玩家)
|
||||
/// 玩家头像
|
||||
/// </summary>
|
||||
public bool isRedName;
|
||||
public string Avatar { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// VIP 等级
|
||||
/// 玩家是否红名
|
||||
/// </summary>
|
||||
public int vipLevel;
|
||||
public bool IsRedName { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 玩家卡牌等级(可能用于展示)
|
||||
/// 玩家等级
|
||||
/// </summary>
|
||||
public int userCardLevel;
|
||||
public int Level { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 玩家唯一客户端 ID(可能用于房间定位)
|
||||
/// Vip等级
|
||||
/// </summary>
|
||||
public string cId;
|
||||
public int VipLevel { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 玩家CID
|
||||
/// </summary>
|
||||
public string CId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 玩家金币
|
||||
/// </summary>
|
||||
public long gold;
|
||||
public long Gold { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 玩家钻石
|
||||
/// </summary>
|
||||
public long diamond;
|
||||
public int Diamond { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 玩家在房间中的位置(1~4)
|
||||
/// 玩家位置
|
||||
/// </summary>
|
||||
public int position;
|
||||
public int Position { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 当前使用的炮台编号
|
||||
/// 炮台
|
||||
/// </summary>
|
||||
public string cannonId;
|
||||
public string CannonId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 当前使用的翅膀编号
|
||||
/// 翅膀
|
||||
/// </summary>
|
||||
public string wingsId;
|
||||
public string WingsId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 当前使用的战神编号
|
||||
/// 战神
|
||||
/// </summary>
|
||||
public string warGodId;
|
||||
public string WarGodId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 当前炮倍(例如 1000、2000)
|
||||
/// 炮倍
|
||||
/// </summary>
|
||||
public int cannonMultiple;
|
||||
public int CannonMultiple { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 进入房间时的金币(用于统计)
|
||||
/// 进场金币
|
||||
/// </summary>
|
||||
public long beginCoin;
|
||||
public long BeginCoin { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 进入房间的时间戳(秒)
|
||||
/// 进房后达到的最高金币
|
||||
/// </summary>
|
||||
public long beginTime;
|
||||
public long MaxGold { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 玩家状态(0 正常,其他状态可扩展)
|
||||
/// 进场时间
|
||||
/// </summary>
|
||||
public int state;
|
||||
public long BeginTime { get; set; } = 0;
|
||||
|
||||
/// <summary>是否为机器人(后端下发)</summary>
|
||||
public bool isBot;
|
||||
/// <summary>
|
||||
/// 状态 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":
|
||||
{
|
||||
if (roomMainPanel != null) roomMainPanel.StopWaitCountdown(); // 游戏结束停走棋倒计时
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0];
|
||||
string winUserId = va["winUserId"]?.ToString();
|
||||
if (string.IsNullOrEmpty(winUserId))
|
||||
@@ -303,9 +304,8 @@ namespace Assets.MyGame.Scripts.Net
|
||||
|
||||
case "SyncGameData":
|
||||
{
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0];
|
||||
string data = va["data"]?.ToString();
|
||||
Debug.Log("[Chess] 同步数据: " + data);
|
||||
// 象棋走棋帧同步数据:后端只透传,交给主面板解析处理
|
||||
if (roomMainPanel != null) roomMainPanel.OnChessNetData(msg);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -62,9 +62,9 @@ namespace Assets.MyGame.Scripts.Net
|
||||
{
|
||||
var notice = JsonConvert.DeserializeObject<WebSocketResponseBase<RoomJoinNotice>>(msg).arguments[0];
|
||||
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 { }
|
||||
@@ -139,15 +139,15 @@ namespace Assets.MyGame.Scripts.Net
|
||||
{
|
||||
var notice = v.arguments[0];
|
||||
// 如果座位被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)
|
||||
{
|
||||
targetSit.isBot = false;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Assets.MyGame.Scripts.Net;
|
||||
using Assets.MyGame.Scripts.Net;
|
||||
using Assets.MyGame.Scripts.Net.WebResponses.ChineseChess;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
@@ -62,6 +62,8 @@ public partial class WebSocketSendList
|
||||
}
|
||||
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 + "]}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -973,19 +973,26 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
/// 数据来自服务端下发的 RoomInfo.players / RoomJoinNotice):
|
||||
/// 玩家ID、昵称、头像、VIP 图标(0~10 级一一对应)、VIP 等级背景(每两级一个)。
|
||||
/// </summary>
|
||||
/// <param name="userId">玩家唯一 ID(显示在 tmp_UserNumber)</param>
|
||||
/// <param name="userId">玩家唯一 ID(用于判断是否本人)</param>
|
||||
/// <param name="userName">玩家昵称(显示在 tmp_UserName)</param>
|
||||
/// <param name="avatar">头像名/URL(走 GameManager 头像缓存,找不到回退默认头像)</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
|
||||
if (tmp_UserNumber != null && !string.IsNullOrEmpty(userId))
|
||||
tmp_UserNumber.text = userId;
|
||||
// 玩家 ID:优先显示后端下发的短编号 UserNumber,没有再用 userId
|
||||
if (tmp_UserNumber != null)
|
||||
{
|
||||
string displayId = string.IsNullOrEmpty(userNumber) ? userId : userNumber;
|
||||
if (!string.IsNullOrEmpty(displayId))
|
||||
tmp_UserNumber.text = displayId;
|
||||
}
|
||||
|
||||
// 昵称
|
||||
// 昵称:非本人的名字打码(前2后2保留,中间***),自己原样显示
|
||||
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),查不到用默认头像
|
||||
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)
|
||||
|
||||
/// <summary>表情显示时长(秒),超时自动隐藏</summary>
|
||||
|
||||
@@ -416,7 +416,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 124.7}
|
||||
m_AnchoredPosition: {x: 0, y: 88.6}
|
||||
m_SizeDelta: {x: 150, y: 139}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5270299543555156791
|
||||
@@ -447,7 +447,7 @@ MonoBehaviour:
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: 5b31886d5bcd88f41affc8104222893f, type: 3}
|
||||
m_Sprite: {fileID: 21300000, guid: 835b61b6f33236b408b6039f602c21b7, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
|
||||
@@ -8430,7 +8430,7 @@ PrefabInstance:
|
||||
- target: {fileID: 5485079200766063859, guid: 965597318af75eb4b9f2af433facf3d4,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 1
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
|
||||
@@ -4126,6 +4126,12 @@ PrefabInstance:
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 6427896563708412520}
|
||||
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
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 4876996923753723225, guid: 8eea6c1a6ddb0eb479afc35eb58efc97,
|
||||
@@ -4173,7 +4179,7 @@ MonoBehaviour:
|
||||
isEffEnd: 0
|
||||
isScoreStart: 0
|
||||
isGoldEffectStart: 0
|
||||
mod: {fileID: 0}
|
||||
mod: {fileID: 305017329864058515}
|
||||
--- !u!1 &5455853164041459123 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 5698692268160748061, guid: 8eea6c1a6ddb0eb479afc35eb58efc97,
|
||||
|
||||
@@ -117,7 +117,7 @@ PrefabInstance:
|
||||
type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: -2085821068, guid: 68e4fec764425b4438eb6a06c7b99c16,
|
||||
objectReference: {fileID: 1246215499, guid: 68e4fec764425b4438eb6a06c7b99c16,
|
||||
type: 3}
|
||||
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
@@ -147,7 +147,7 @@ PrefabInstance:
|
||||
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 180
|
||||
value: 77
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5627438144398829183, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
|
||||
@@ -29,7 +29,7 @@ public class YGLGDieEvent : BJRedPacketEvent
|
||||
private IEnumerator ScrollTo(int target, Action onComplete)
|
||||
{
|
||||
int from = currScore;
|
||||
float duration = 5f;
|
||||
float duration = 3f;
|
||||
float elapsed = 0f;
|
||||
float coinInterval = 0.12f;
|
||||
float nextCoinTime = 0f;
|
||||
|
||||
@@ -117,7 +117,7 @@ PrefabInstance:
|
||||
type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: -835389033, guid: 68e4fec764425b4438eb6a06c7b99c16,
|
||||
objectReference: {fileID: -511180246, guid: 68e4fec764425b4438eb6a06c7b99c16,
|
||||
type: 3}
|
||||
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
|
||||
@@ -117,7 +117,7 @@ PrefabInstance:
|
||||
type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: -835389033, guid: 68e4fec764425b4438eb6a06c7b99c16,
|
||||
objectReference: {fileID: 126247453, guid: 68e4fec764425b4438eb6a06c7b99c16,
|
||||
type: 3}
|
||||
- target: {fileID: 4213903445032130685, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
|
||||
@@ -3526,6 +3526,21 @@ PrefabInstance:
|
||||
propertyPath: m_Layer
|
||||
value: 10
|
||||
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,
|
||||
type: 3}
|
||||
propertyPath: m_Layer
|
||||
|
||||
@@ -11,7 +11,7 @@ PrefabInstance:
|
||||
- target: {fileID: 236781439713602893, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: UI_baojiang Variant
|
||||
value: UI_baojiang Variant 11
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
@@ -113,6 +113,42 @@ PrefabInstance:
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 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_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
|
||||
@@ -240,6 +240,46 @@ PrefabInstance:
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: -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:
|
||||
- {fileID: 114621510681728303, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
|
||||
- {fileID: 135518489005915545, guid: d4f11eaa7570f9c44b093687263b450f, type: 3}
|
||||
@@ -639,19 +679,23 @@ MonoBehaviour:
|
||||
currEffect_DieAward: {fileID: 0}
|
||||
isMove: 1
|
||||
is3D: 0
|
||||
forwordXYZ: -Z
|
||||
forwordXYZ: Z
|
||||
fishenum: 0
|
||||
moveTime: 0
|
||||
isyz: 0
|
||||
yzID:
|
||||
colliderList: []
|
||||
lockPoint: {fileID: 5461717199468334793}
|
||||
bingDongEffect: {fileID: 0}
|
||||
bingDongEffect:
|
||||
- {fileID: 0}
|
||||
needLockEvent: 0
|
||||
createVideoClip: {fileID: 0}
|
||||
rotationPY: 80
|
||||
useMirrorCompensate: 1
|
||||
baseMmove: 0
|
||||
isRotate: 1
|
||||
isNot1: 0
|
||||
ischild0: 1
|
||||
depthOffset: -850
|
||||
is2DFish: 0
|
||||
sortOrder2D: 0
|
||||
|
||||
@@ -45,30 +45,32 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
bjEndUI: {fileID: 0}
|
||||
useScorePanel: 1
|
||||
tMP_Score: {fileID: 0}
|
||||
scorePanelPrefab: {fileID: 0}
|
||||
currScore: 0
|
||||
maxScore: 0
|
||||
scoreCount: 0
|
||||
bjEndUIOffsetY: 150
|
||||
posID: 0
|
||||
paoBei: 0
|
||||
fishScore: 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
|
||||
moveDuration: 0.5
|
||||
moveEase: 6
|
||||
startOffset: {x: 0, y: 0, z: -100}
|
||||
bjEndUIOffsetY: 150
|
||||
coinFlyDuration: 0.5
|
||||
coinArrivalInterval: 0.1
|
||||
isSelf: 0
|
||||
showAddScoreFX: 1
|
||||
autoFinishOnScoreFull: 1
|
||||
totalBJCount: 0
|
||||
currBJCount: 0
|
||||
isEffEnd: 0
|
||||
isScoreStart: 0
|
||||
isScoreEnd: 0
|
||||
isGoldEffectStart: 0
|
||||
baoJiangMode: 0
|
||||
endUIType: 1
|
||||
@@ -88,16 +90,21 @@ MonoBehaviour:
|
||||
dieEffectTesyNum: 0
|
||||
minBJCount: 10
|
||||
maxBJCount: 15
|
||||
laserPrefab: {fileID: 0}
|
||||
laserLengthCorrect: 1
|
||||
lightningMaterial: {fileID: 2100000, guid: a023113e8eb8bf245b8ba10c3e9788d1, type: 2}
|
||||
lightningColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1}
|
||||
lightningWidth: 0.08
|
||||
zigzagSegments: 6
|
||||
zigzagJitter: 0.5
|
||||
flickerRate: 12
|
||||
explosionPrefab: {fileID: 1709254077376921, guid: 08be47e4b1d3e1c4a895269c2c08653c,
|
||||
type: 3}
|
||||
explosionRadius: 10
|
||||
hitFxPrefab: {fileID: 0}
|
||||
lightningCount: 5
|
||||
lightningRange: 5
|
||||
circleRange: 3
|
||||
fillRange: 0
|
||||
lightningWait: 0.5
|
||||
killDelay: 0.3
|
||||
fishLayer:
|
||||
|
||||
@@ -284,35 +284,32 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
bjEndUI: {fileID: -8120521337631753117, guid: 24beb697c2a6de5468bbfc86bdf3a918,
|
||||
type: 3}
|
||||
useScorePanel: 1
|
||||
tMP_Score: {fileID: 0}
|
||||
scorePanelPrefab: {fileID: 0}
|
||||
currScore: 0
|
||||
maxScore: 0
|
||||
scoreCount: 0
|
||||
bjEndUIOffsetY: 150
|
||||
posID: 0
|
||||
paoBei: 0
|
||||
fishScore: 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
|
||||
moveDuration: 0.5
|
||||
moveEase: 6
|
||||
startOffset: {x: 0, y: 0, z: -100}
|
||||
bjEndUIOffsetY: 150
|
||||
coinFlyDuration: 0.5
|
||||
coinArrivalInterval: 0.1
|
||||
isSelf: 0
|
||||
showAddScoreFX: 1
|
||||
autoFinishOnScoreFull: 1
|
||||
totalBJCount: 0
|
||||
currBJCount: 0
|
||||
isEffEnd: 0
|
||||
isScoreStart: 0
|
||||
isScoreEnd: 0
|
||||
isGoldEffectStart: 0
|
||||
explosionRadius: 5
|
||||
fishLayer:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
explosionDelay: 0.5
|
||||
explosionDuration: 2
|
||||
explosionCenter: {x: 0, y: 0, z: 0}
|
||||
baoJiItemCount: 30
|
||||
|
||||
@@ -886,9 +886,9 @@ RectTransform:
|
||||
m_Father: {fileID: 8031883748199427146}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: -0.49072266, y: -262.72168}
|
||||
m_SizeDelta: {x: -79.6833, y: -700.8773}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.49072266, y: 112.27832}
|
||||
m_SizeDelta: {x: -79.6833, y: 49.12268}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5611486403026417207
|
||||
CanvasRenderer:
|
||||
|
||||
@@ -1,5 +1,160 @@
|
||||
%YAML 1.1
|
||||
%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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -17,7 +172,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &1755596749695405114
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -672,6 +827,7 @@ RectTransform:
|
||||
- {fileID: 551837965639396177}
|
||||
- {fileID: 4852173693812700946}
|
||||
- {fileID: 6605999270105133777}
|
||||
- {fileID: 2747341826554260929}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
@@ -748,6 +904,7 @@ MonoBehaviour:
|
||||
tmp_CoinCount_Top: {fileID: 5805709281203068529}
|
||||
tmp_WaitTime_Top: {fileID: 7342989625873532498}
|
||||
img_Title_Top: {fileID: 5212885171862005544}
|
||||
chessBoard: {fileID: 1568158661184407560}
|
||||
skeletonGraphic: {fileID: 2515020745373521213}
|
||||
skineName_JinXingZhong: jrz
|
||||
skineName_KaiShi: ks
|
||||
@@ -2517,6 +2674,38 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2528,8 +2717,9 @@ GameObject:
|
||||
- component: {fileID: 1650206161006120839}
|
||||
- component: {fileID: 1879959141934861467}
|
||||
- component: {fileID: 3183306154905010273}
|
||||
- component: {fileID: 1568158661184407560}
|
||||
m_Layer: 0
|
||||
m_Name: "\u670B\u5BA2\u6E38\u620F"
|
||||
m_Name: ChessBoard
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -2546,7 +2736,9 @@ RectTransform:
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Children:
|
||||
- {fileID: 3121338166189145531}
|
||||
- {fileID: 2062513398397270554}
|
||||
m_Father: {fileID: 2713217087351076567}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
@@ -2592,6 +2784,92 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
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
|
||||
GameObject:
|
||||
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 Image img_Title_Top;
|
||||
|
||||
[Header("ChessGame 象棋对局")]
|
||||
public UIChessBoard chessBoard; // 棋盘控件(Inspector 手动拖入;留空则运行时自动生成)
|
||||
|
||||
private Coroutine waitCountdown;
|
||||
|
||||
public SkeletonGraphic skeletonGraphic;
|
||||
@@ -221,6 +224,7 @@ public class ChineseChessMainPanel : GameMainPanel_Base
|
||||
{
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<ChessGameRoom>>(msg.ToString());
|
||||
ChessGameRoom chessGameRoom = va.arguments[0];
|
||||
roomData = chessGameRoom; // 记录房间数据(开象棋对局时要取阵营)
|
||||
UpdateUserData(chessGameRoom);
|
||||
|
||||
switch (chessGameRoom.users.Count)
|
||||
@@ -359,6 +363,18 @@ public class ChineseChessMainPanel : GameMainPanel_Base
|
||||
{
|
||||
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
|
||||
{
|
||||
roomData = roomData,
|
||||
@@ -378,8 +394,13 @@ public class ChineseChessMainPanel : GameMainPanel_Base
|
||||
Spine_KaiShi();
|
||||
StartCoroutine(DelayedKaiShiLoopToClose());
|
||||
|
||||
// 初始化象棋对局(普通管理类统一在此控制)
|
||||
StartChessGame();
|
||||
|
||||
btn_QiuHe.onClick.RemoveAllListeners();
|
||||
btn_RenShu.onClick.RemoveAllListeners();
|
||||
btn_HuiQi.onClick.RemoveAllListeners();
|
||||
btn_HuiQi.onClick.AddListener(RequestUndoChess);
|
||||
btn_QiuHe.onClick.AddListener(() =>
|
||||
{
|
||||
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()
|
||||
{
|
||||
|
||||
@@ -461,6 +730,8 @@ public class ChineseChessMainPanel : GameMainPanel_Base
|
||||
protected override void OnHide()
|
||||
{
|
||||
base.OnHide();
|
||||
// 清理象棋对局
|
||||
ClearChessGame();
|
||||
// 退出:播放 Close 动画后禁用 Spine
|
||||
PlaySpineAnim(animName_Close, 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.AddListener(() =>
|
||||
{
|
||||
@@ -63,9 +78,17 @@ public class UIChineseChessHint : SubUIBase
|
||||
}
|
||||
else if (v.hintType == 2)
|
||||
{
|
||||
|
||||
|
||||
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(() =>
|
||||
{
|
||||
//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);
|
||||
|
||||
});
|
||||
|
||||
@@ -1688,10 +1688,10 @@ MonoBehaviour:
|
||||
dalaba: {fileID: 0}
|
||||
zhanhuanka: {fileID: 0}
|
||||
huojianpao: {fileID: 0}
|
||||
obj_DaLaBaPanel: {fileID: 0}
|
||||
tmp_DaLaBaInput: {fileID: 0}
|
||||
btn_DaLaBaSend: {fileID: 0}
|
||||
btn_DaLaBaClose: {fileID: 0}
|
||||
obj_DaLaBaPanel: {fileID: 3081326209000850698}
|
||||
tmp_DaLaBaInput: {fileID: 1093531695052846095}
|
||||
btn_DaLaBaSend: {fileID: 737128483515892074}
|
||||
btn_DaLaBaClose: {fileID: 6051749251440295509}
|
||||
btn_SettingList: {fileID: 8183400499693274360}
|
||||
SittingListParent: {fileID: 3985212453111435068}
|
||||
btn_TuJian: {fileID: 8299373129192596900}
|
||||
@@ -3991,7 +3991,7 @@ PrefabInstance:
|
||||
- target: {fileID: 5494969937974881520, guid: 6c8512965de208f498306fbdfeb8eb5b,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -262.72168
|
||||
value: 111.8
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6114408877341087527, guid: 6c8512965de208f498306fbdfeb8eb5b,
|
||||
type: 3}
|
||||
@@ -4873,6 +4873,18 @@ PrefabInstance:
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
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
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 4806513792702419790, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
@@ -4885,6 +4897,18 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
|
||||
m_Name:
|
||||
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
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 6861400117117127987, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
@@ -4915,6 +4939,12 @@ GameObject:
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 5626085150536392825}
|
||||
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
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 7099132353713170209, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
@@ -4975,6 +5005,18 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
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
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 1519515319374989053, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
@@ -6367,11 +6409,6 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: 'Setting '
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5754269309123817730, guid: 87a141ee6b07c324b91593c88bd1db9c,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
@@ -6450,12 +6487,12 @@ PrefabInstance:
|
||||
- target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 128.5
|
||||
value: 142
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -169.49991
|
||||
value: -235
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8975416087219219768, guid: 87a141ee6b07c324b91593c88bd1db9c,
|
||||
type: 3}
|
||||
|
||||
@@ -322,7 +322,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
|
||||
foreach (var item in list_Sits)
|
||||
{
|
||||
if (item.posID == roomJoinNotice.position)
|
||||
if (item.posID == roomJoinNotice.Position)
|
||||
{
|
||||
currSitData = item;
|
||||
// ⭐ 长按本地座位的 img_OpenPT 开关炮台面板(与 btn_ChangeTurret 同逻辑)
|
||||
@@ -353,10 +353,10 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
}
|
||||
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_")
|
||||
bool isBotJoin = roomJoinNotice.isBot ||
|
||||
(!string.IsNullOrEmpty(roomJoinNotice.userId) && roomJoinNotice.userId.StartsWith("bot_"));
|
||||
bool isBotJoin = roomJoinNotice.IsBot ||
|
||||
(!string.IsNullOrEmpty(roomJoinNotice.UserId) && roomJoinNotice.UserId.StartsWith("bot_"));
|
||||
|
||||
if (isBotJoin)
|
||||
{
|
||||
@@ -376,7 +376,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
// 新玩家资源加载完毕后会主动发 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)
|
||||
{
|
||||
BuildPropList();
|
||||
// ⭐ 数量是动态数据:每次打开面板都刷新一级角标(构建有一次性守卫,刷新无守卫)
|
||||
RefreshPropFirstLayerCounts();
|
||||
// ⭐ 数量是动态数据:每次打开面板拉最新背包再刷新(刮刮卡等面板内刮出/消耗的道具也能同步)
|
||||
RefreshPropCounts();
|
||||
}
|
||||
else
|
||||
ClosePropTwo(); // 关道具面板时一并收起二层并重置展开状态
|
||||
@@ -1552,6 +1552,26 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
/// <summary>二层冷却截止时刻(Time.time,全局一个):使用任意二层道具后所有二层道具一起倒计时;列表重建后据此恢复显示</summary>
|
||||
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>
|
||||
private void RefreshPropFirstLayerCounts()
|
||||
@@ -1636,6 +1656,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
{
|
||||
ClosePropTwo(); // 顺带关掉可能开着的其它二层
|
||||
UsePropEffect(single);
|
||||
RefreshPropCounts(); // ⭐ 使用后拉最新背包,刷新所有道具数量显示
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1714,6 +1735,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
}
|
||||
StartPropTwoCooldown(); // 使用后二层所有道具一起进入 5 秒冷却
|
||||
UsePropEffect(backend);
|
||||
RefreshPropCounts(); // ⭐ 使用后拉最新背包,刷新所有道具数量显示
|
||||
}
|
||||
|
||||
/// <summary>二层是否在冷却中(全局冷却:使用任意二层道具后所有二层道具一起倒计时)</summary>
|
||||
@@ -1792,17 +1814,16 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
// 游戏内简化为一次使用1个(背包里支持滑条选数量)
|
||||
var typeName = string.IsNullOrEmpty(p.name) ? PropEnum.VIP经验.ToString() : p.name;
|
||||
APIRequestList.UseVipExp(1, (result) =>
|
||||
{
|
||||
UIManager.Instance.ShowBoardError(string.IsNullOrEmpty(result) ? "使用成功" : result);
|
||||
// 刷新用户数据,同步道具数量与VIP经验
|
||||
APIRequestList.GetUser((user) =>
|
||||
{
|
||||
if (user != null)
|
||||
GameManager.Instance.UpdataUserData(user);
|
||||
RefreshPropFirstLayerCounts(); // 数量变化后同步刷新一级角标
|
||||
RebuildPropTwo(); // 二层开着的话同步刷新显示数量
|
||||
UIManager.Instance.ShowBoardError(string.IsNullOrEmpty(result) ? "使用成功" : result);
|
||||
// 刷新用户数据,同步道具数量与VIP经验
|
||||
APIRequestList.GetUser((user) =>
|
||||
{
|
||||
if (user != null)
|
||||
GameManager.Instance.UpdataUserData(user);
|
||||
RefreshPropCounts(false); // 数据已最新:刷新一级角标 + 二层数量显示
|
||||
});
|
||||
});
|
||||
});
|
||||
//UIManager.Instance.ShowTiShi($"确定使用1个{typeName}吗?", () =>
|
||||
//{
|
||||
// APIRequestList.UseVipExp(1, (result) =>
|
||||
@@ -1912,8 +1933,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
{
|
||||
if (user != null)
|
||||
GameManager.Instance.UpdataUserData(user);
|
||||
RefreshPropFirstLayerCounts(); // 鱼雷库存已扣,刷新一级角标
|
||||
RebuildPropTwo(); // 二层开着的话同步刷新数量
|
||||
RefreshPropCounts(false); // 数据已最新:刷新一级角标 + 二层数量显示
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
// ⭐ 核心原则:鱼还活着就显示图标,鱼死了才隐藏
|
||||
@@ -3242,7 +3265,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
private void CheckLockTargetValid()
|
||||
@@ -3336,8 +3361,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
if (currSitData.lockFX != null && target.gameObject.activeInHierarchy)
|
||||
{
|
||||
if (!currSitData.lockFX.activeSelf) currSitData.lockFX.SetActive(true);
|
||||
Vector3 p = lockTr.position;
|
||||
p.z = Camera.main.transform.position.z + 1;
|
||||
// ⭐ z 轴固定 -50(与每帧 UpdateSingleLockFX 一致):在爆奖特效(z=-100)前面
|
||||
var p = lockTr.position;
|
||||
p.z = LockFXFixedZ;
|
||||
currSitData.lockFX.transform.position = p;
|
||||
}
|
||||
}
|
||||
@@ -4126,7 +4152,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
// (RoomChangeResponse 用户列表,RoomInfo 消息下发),按 userId 查询
|
||||
var playerInfo = GameManager.Instance.gameData?.currRoomData?.players?
|
||||
.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}");
|
||||
|
||||
@@ -1907,10 +1907,10 @@ MonoBehaviour:
|
||||
dalaba: {fileID: 0}
|
||||
zhanhuanka: {fileID: 0}
|
||||
huojianpao: {fileID: 0}
|
||||
obj_DaLaBaPanel: {fileID: 0}
|
||||
tmp_DaLaBaInput: {fileID: 0}
|
||||
btn_DaLaBaSend: {fileID: 0}
|
||||
btn_DaLaBaClose: {fileID: 0}
|
||||
obj_DaLaBaPanel: {fileID: 1734655381547348006}
|
||||
tmp_DaLaBaInput: {fileID: 4466633453303021859}
|
||||
btn_DaLaBaSend: {fileID: 4101482175202341958}
|
||||
btn_DaLaBaClose: {fileID: 7002406776894393209}
|
||||
btn_SettingList: {fileID: 8423880718232560262}
|
||||
SittingListParent: {fileID: 3618840318454065474}
|
||||
btn_TuJian: {fileID: 8528602079873795034}
|
||||
@@ -6426,6 +6426,11 @@ PrefabInstance:
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7264534340452394355, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7942853405418363685, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
@@ -6457,6 +6462,12 @@ GameObject:
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 8989876033869305173}
|
||||
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
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 7099132353713170209, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
@@ -6493,6 +6504,30 @@ RectTransform:
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 8989876033869305173}
|
||||
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
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 4806513792702419790, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
@@ -6553,6 +6588,18 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
|
||||
m_Name:
|
||||
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
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 2108758979454822035, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
|
||||
@@ -3883,10 +3883,10 @@ MonoBehaviour:
|
||||
dalaba: {fileID: 0}
|
||||
zhanhuanka: {fileID: 0}
|
||||
huojianpao: {fileID: 0}
|
||||
obj_DaLaBaPanel: {fileID: 0}
|
||||
tmp_DaLaBaInput: {fileID: 0}
|
||||
btn_DaLaBaSend: {fileID: 0}
|
||||
btn_DaLaBaClose: {fileID: 0}
|
||||
obj_DaLaBaPanel: {fileID: 5192004767366045538}
|
||||
tmp_DaLaBaInput: {fileID: 7918353195504856679}
|
||||
btn_DaLaBaSend: {fileID: 7562787855113493250}
|
||||
btn_DaLaBaClose: {fileID: 3545042015164146749}
|
||||
btn_SettingList: {fileID: 542828182532005264}
|
||||
SittingListParent: {fileID: 4708396459282093652}
|
||||
btn_TuJian: {fileID: 375082849015872716}
|
||||
@@ -7887,9 +7887,15 @@ MonoBehaviour:
|
||||
img_OpenPT: {fileID: 0}
|
||||
IsBaoJiangingActive: 0
|
||||
obj_BaoJiangZhongPanelPosition: {fileID: 0}
|
||||
user:
|
||||
posID: 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
|
||||
consumeGoldNum: 0
|
||||
tMP_GoldNum: {fileID: 415724694880221988}
|
||||
@@ -8107,9 +8113,15 @@ MonoBehaviour:
|
||||
img_OpenPT: {fileID: 0}
|
||||
IsBaoJiangingActive: 0
|
||||
obj_BaoJiangZhongPanelPosition: {fileID: 0}
|
||||
user:
|
||||
posID: 1
|
||||
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
|
||||
consumeGoldNum: 0
|
||||
tMP_GoldNum: {fileID: 1085753103380507267}
|
||||
@@ -13586,6 +13598,48 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
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
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 6861400117117127987, guid: e5efa9f179bbfdb4ba8e73fe85eb109a,
|
||||
@@ -13610,20 +13664,42 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: Game177_Lock
|
||||
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}
|
||||
propertyPath: m_IsActive
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 212243736805655561, guid: 3d7a2eb901865174aab8a696e060d045,
|
||||
type: 3}
|
||||
propertyPath: m_SortingOrder
|
||||
value: 1001
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 212587765826080250, guid: 3d7a2eb901865174aab8a696e060d045,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 212587765826080250, guid: 3d7a2eb901865174aab8a696e060d045,
|
||||
type: 3}
|
||||
propertyPath: m_SortingOrder
|
||||
value: 1001
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 224618682377417806, guid: 3d7a2eb901865174aab8a696e060d045,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
@@ -13845,10 +13921,22 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: Game177_LockOther
|
||||
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}
|
||||
propertyPath: m_IsActive
|
||||
value: 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}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
@@ -13894,11 +13982,21 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 212061268324235159, guid: 2fefedf061efaba40afa85543d55ca2e,
|
||||
type: 3}
|
||||
propertyPath: m_SortingOrder
|
||||
value: 1000
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 212099118695303065, guid: 2fefedf061efaba40afa85543d55ca2e,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 212099118695303065, guid: 2fefedf061efaba40afa85543d55ca2e,
|
||||
type: 3}
|
||||
propertyPath: m_SortingOrder
|
||||
value: 1000
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
|
||||
@@ -253,6 +253,11 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
@@ -353,6 +358,21 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
@@ -473,6 +493,11 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
@@ -768,6 +793,21 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
|
||||
@@ -93,6 +93,21 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
@@ -553,6 +568,11 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
|
||||
@@ -78,6 +78,11 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
@@ -443,6 +448,36 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_Enabled
|
||||
@@ -533,6 +568,11 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_Enabled
|
||||
@@ -648,6 +688,11 @@ PrefabInstance:
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 373.17285
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6916578527196273495, guid: c9c177e60fd350e49844955f7e8a5874,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6916578527196273495, guid: c9c177e60fd350e49844955f7e8a5874,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -783,6 +828,11 @@ PrefabInstance:
|
||||
propertyPath: m_SortingLayer
|
||||
value: 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,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
|
||||
@@ -11,8 +11,7 @@ Material:
|
||||
m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- OUTLINE_ON
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 1
|
||||
m_EnableInstancingVariants: 0
|
||||
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||