Commit e269b470 authored by lijin's avatar lijin

优化初始化速度

parent 4cc2cde9
...@@ -12,12 +12,21 @@ public class GameMgr : MonoBehaviour ...@@ -12,12 +12,21 @@ public class GameMgr : MonoBehaviour
get { return ins; } get { return ins; }
} }
public MainData md; public MainData md;//主数据
public MaskItemMgr miMgr; public MaskItemMgr miMgr;//遮罩管理器
public TextItemMgr tiMgr; public TextItemMgr tiMgr;//字体管理器
public EffectItemMgr eiMgr; public EffectItemMgr eiMgr;//特效管理器
public Texture2D gray; public Texture2D gray;//遮罩显示图元
void Update()
{
Save();//自动保存逻辑
Click();//点击事件逻辑
Play();//涂色重播逻辑
}
//初始化,主逻辑入口
public void Init(string key, Texture2D png, Sprite jpg, ResJsonData json, DynamicData dynamic, Texture2D map) public void Init(string key, Texture2D png, Sprite jpg, ResJsonData json, DynamicData dynamic, Texture2D map)
{ {
ins = this; ins = this;
...@@ -25,63 +34,38 @@ public class GameMgr : MonoBehaviour ...@@ -25,63 +34,38 @@ public class GameMgr : MonoBehaviour
GetComponent<RectTransform>().offsetMax = Vector2.zero; GetComponent<RectTransform>().offsetMax = Vector2.zero;
GetComponent<RectTransform>().offsetMin = Vector2.zero; GetComponent<RectTransform>().offsetMin = Vector2.zero;
} }
//设置遮罩显示图元,优先于Init调用
public void ChooseGroup(int id)
{
md.ChooseGroup(id);
}
public void SetGray(Texture2D _gray) public void SetGray(Texture2D _gray)
{ {
gray = _gray; gray = _gray;
} }
public static int gunSize = 3; //选组接口,传入组ID
public void ChooseGroup(int groupId)
void Update()
{ {
Save(); md.ChooseGroup(groupId);
//Scale();
Click();
Play();
} }
#region 缩放 //重置接口,还原涂色数据
private Vector2 Pos_1; public void Clear()
private Vector2 Pos_2;
public void Scale()
{ {
if (Input.touchCount == 2) md.Clear();
{ md.Init(md.key, md.png, md.jpg, md.json, md.dynamic, md.map);
if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved) }
{ //重播接口
Vector2 n_Pos_1 = Input.GetTouch(0).position; public void RePlay()
Vector2 n_Pos_2 = Input.GetTouch(1).position; {
md.RePlay();
if (Vector2.Distance(Pos_1, Pos_2) < Vector2.Distance(n_Pos_1, n_Pos_2)) stepIndex = 0;
{ curTime = 0;
transform.parent.localScale += Vector3.one * 0.25f; }
if (transform.parent.localScale.x > 4) //辅助涂色接口
{ public void AutoClick()
transform.parent.localScale = Vector3.one * 4; {
} md.AutoClick();
}
else
{
transform.parent.localScale -= Vector3.one * 0.25f;
if (transform.parent.localScale.x < 0.6f)
{
transform.parent.localScale = Vector3.one * 0.6f;
}
}
Pos_1 = n_Pos_1;
Pos_2 = n_Pos_2;
tiMgr.SizeChange(transform.parent.localScale.x);
}
}
} }
#endregion
#region 点击 #region 点击
public static readonly Vector2 gunSize = new Vector2(3, 10);
private float time = 0; private float time = 0;
private Vector2 pos = Vector2.zero; private Vector2 pos = Vector2.zero;
private int isLongPress = -1;//-1无逻辑,0按下,1响应点击,2响应长按 private int isLongPress = -1;//-1无逻辑,0按下,1响应点击,2响应长按
...@@ -131,11 +115,11 @@ public class GameMgr : MonoBehaviour ...@@ -131,11 +115,11 @@ public class GameMgr : MonoBehaviour
public void UseGun(Vector2 v) public void UseGun(Vector2 v)
{ {
List<Vector2> list = new List<Vector2>(); List<Vector2> list = new List<Vector2>();
for (int i = 0; i < gunSize; i++) for (int i = 0; i < gunSize.x; i++)
{ {
for (int j = 0; j < gunSize; j++) for (int j = 0; j < gunSize.x; j++)
{ {
Vector2 temp = new Vector2((int)v.x + (i - gunSize / 2) * 10, (int)v.y + (j - gunSize / 2) * 10); Vector2 temp = new Vector2((int)v.x + (i - gunSize.x / 2) * gunSize.y, (int)v.y + (j - gunSize.x / 2) * gunSize.y);
list.Add(temp); list.Add(temp);
} }
} }
...@@ -153,11 +137,7 @@ public class GameMgr : MonoBehaviour ...@@ -153,11 +137,7 @@ public class GameMgr : MonoBehaviour
} }
} }
} }
public bool OnClickPixel(float x, float y) //点击由坐标系转图内像素坐标
{
Vector2 v = new Vector2(x + md.png.width / 2, y + md.png.height / 2);
return md.OnClickPos(v);
}
public bool OnClickPixel(Vector2 v) public bool OnClickPixel(Vector2 v)
{ {
v.x += md.png.width / 2; v.x += md.png.width / 2;
...@@ -166,24 +146,13 @@ public class GameMgr : MonoBehaviour ...@@ -166,24 +146,13 @@ public class GameMgr : MonoBehaviour
} }
#endregion #endregion
#region 重播逻辑
public void Clear() private int stepIndex = -1;//重播判断值,-1不处理,0及以上为重播到第几步
{ private static readonly float delay = 0.5f;//重播延迟
md.Clear(); private static readonly float maxTime = 0.1f;//重播步间隔
md.Init(md.key, md.png, md.jpg, md.json, md.dynamic, md.map); private float curTime = 0;//重播当前进行时间
} //Update调用判断逻辑
public void RePlay() private void Play()
{
md.RePlay();
stepIndex = 0;
curTime = 0;
}
private int stepIndex = -1;
private readonly float delay = 0.5f;
private readonly float maxTime = 0.1f;
private float curTime = 0;
public void Play()
{ {
if (stepIndex == -1) if (stepIndex == -1)
{ {
...@@ -203,12 +172,17 @@ public class GameMgr : MonoBehaviour ...@@ -203,12 +172,17 @@ public class GameMgr : MonoBehaviour
} }
} }
} }
public float saveTime = -1; #endregion
#region 保存逻辑
private float saveTime = -1;//保存判断值,由正变负则保存
//保存接口,点击涂色触发
public void SaveTime() public void SaveTime()
{ {
saveTime = 1.5f; saveTime = 1.5f;
} }
public void Save() //Update调用判断逻辑
private void Save()
{ {
if (saveTime <= 0) if (saveTime <= 0)
{ {
...@@ -224,8 +198,5 @@ public class GameMgr : MonoBehaviour ...@@ -224,8 +198,5 @@ public class GameMgr : MonoBehaviour
} }
} }
} }
public void AutoClick() #endregion
{
md.AutoClick();
}
} }
...@@ -33,10 +33,11 @@ public class MaskItemMgr : MonoBehaviour ...@@ -33,10 +33,11 @@ public class MaskItemMgr : MonoBehaviour
temp.gameObject.SetActive(false); temp.gameObject.SetActive(false);
} }
} }
public void Create(MainData md, ExRoomDatas erd, int roomId, int groupId) public MaskItem Create(MainData md, ExRoomDatas erd, int roomId, int groupId)
{ {
MaskItem temp = Get(); MaskItem temp = Get();
temp.Init(md, erd, roomId, groupId); temp.Init(md, erd, roomId, groupId);
return temp;
} }
public void Play(Vector3 v, int id) public void Play(Vector3 v, int id)
...@@ -53,12 +54,14 @@ public class MaskItemMgr : MonoBehaviour ...@@ -53,12 +54,14 @@ public class MaskItemMgr : MonoBehaviour
public void Init(ResJsonData rjd, DynamicData dynamic, Texture2D png) public void Init(ResJsonData rjd, DynamicData dynamic, Texture2D png)
{ {
CircleAll(); CircleAll();
float f = png.width * png.height * 0.01f;
for (int i = 0; i < rjd.roomGroupsData.Count; i++) for (int i = 0; i < rjd.roomGroupsData.Count; i++)
{ {
RoomGroupsData rgd = rjd.roomGroupsData[i]; RoomGroupsData rgd = rjd.roomGroupsData[i];
for (int j = 0; j < rgd.roomIds.Count; j++) for (int j = 0; j < rgd.roomIds.Count; j++)
{ {
RoomDatas rd = rjd.roomDatas[rgd.roomIds[j]]; RoomDatas rd = rjd.roomDatas[rgd.roomIds[j]];
if (rd.posIndex.Count > f)
//if (!dynamic.step.Contains(rd.id)) //if (!dynamic.step.Contains(rd.id))
{ {
ExRoomDatas erd = new ExRoomDatas(); ExRoomDatas erd = new ExRoomDatas();
...@@ -84,16 +87,39 @@ public class MaskItemMgr : MonoBehaviour ...@@ -84,16 +87,39 @@ public class MaskItemMgr : MonoBehaviour
{ {
for (int i = 0; i < useList.Count; i++) for (int i = 0; i < useList.Count; i++)
{ {
if (useList[i].groupId == groupId) useList[i].Hide();
}
if (groupId != -1)
{
RoomGroupsData rgd = GameMgr.Ins.md.json.roomGroupsData[groupId - 1];
for (int i = 0; i < rgd.roomIds.Count; i++)
{ {
useList[i].Show(); RoomDatas rd = GameMgr.Ins.md.json.roomDatas[rgd.roomIds[i]];
MaskItem item = IsHave(rd.id, rd);
if (!GameMgr.Ins.md.dynamic.step.Contains(item.roomId))
{
item.Show();
}
} }
else }
}
public MaskItem IsHave(int roomId, RoomDatas rd)
{
for (int j = 0; j < useList.Count; j++)
{
if (useList[j].roomId == roomId)
{ {
useList[i].Hide(); return useList[j];
} }
} }
ExRoomDatas erd = new ExRoomDatas();
for (int k = 0; k < rd.posIndex.Count; k++)
{
erd.AddData(rd.posIndex[k], GameMgr.Ins.md.png.width);
}
return Create(GameMgr.Ins.md, erd, rd.id, rd.groupId);
} }
public void Replay(int roomId = -1) public void Replay(int roomId = -1)
{ {
for (int i = 0; i < useList.Count; i++) for (int i = 0; i < useList.Count; i++)
......
...@@ -58,7 +58,6 @@ public class TextItemMgr : MonoBehaviour ...@@ -58,7 +58,6 @@ public class TextItemMgr : MonoBehaviour
//if (!dynamic.step.Contains(rd.id)) //if (!dynamic.step.Contains(rd.id))
{ {
TextItem temp = Get(); TextItem temp = Get();
temp.gameObject.SetActive(true);
temp.roomId = rd.id; temp.roomId = rd.id;
temp.Text.fontSize = rd.pr; temp.Text.fontSize = rd.pr;
temp.transform.localPosition = new Vector3(rd.px - png.width / 2f, rd.py - png.height / 2f, 0); temp.transform.localPosition = new Vector3(rd.px - png.width / 2f, rd.py - png.height / 2f, 0);
......
...@@ -387,7 +387,7 @@ public class GroupListManager : MonoBehaviour ...@@ -387,7 +387,7 @@ public class GroupListManager : MonoBehaviour
public void Save_Btn() public void Save_Btn()
{ {
GameMgr.Ins.Save(); //GameMgr.Ins.Save();
} }
public void Clear_Btn() public void Clear_Btn()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment