static public void ReleaseTile(TouchTileBase tile) { //Debug.LogWarning("ReleaseTile"); if (tile != null) { tile.gameObject.SetActive(false); m_Recycler.Push(tile); } }
private static TouchTileBase InstanceTilePrefab(string prefabName) { GameObject prefab = Resources.Load <GameObject>(prefabName); GameObject go = GameObject.Instantiate(prefab); TouchTileBase instance = go.GetComponent <TouchTileBase>(); if (instance == null) { Debug.LogError("null tile obj" + prefabName); } return(instance); }
static public TouchTileBase CreateTile(string name) { //Debug.LogWarning("CreateTile"); string respath = m_BasePath + name; TouchTileBase tile = m_Recycler.Pop(name) as TouchTileBase; if (tile == null) { tile = InstanceTilePrefab(respath); } tile.gameObject.SetActive(true); return(tile); }
public TouchTileBase CreateTile( float musictime, float delaytime, float startpresstime, string name) { TouchTileBase pBeat = TouchTileFactory.CreateTile(name); if (pBeat != null) { pBeat.InitTile( m_SelfData, m_Length, musictime, delaytime, startpresstime); } return(pBeat); }
//public void CreateTileMesh(TouchTileBase pBeat, Vector3[] points = null) //{ // pBeat.CreateMesh(points); //} public void CreateTileMesh(TouchTileBase pBeat, Vector3[] points = null, Vector3[] normals = null) { pBeat.CreateMesh(points, normals); }
void AttachBlock(TileSpawner bs, float passedprocess) { //test for curve TouchTileBase pTile = null; List <int> usefultracknum = new List <int>(); if (m_LastTrackProcesses.Count > 0) { for (int i = 0; i < TrackManager.instance.trackNum; ++i) { if (i == lasttrack) { continue; } if (m_LastTrackProcesses.ContainsKey(i)) { //证明这个轨道的音此刻已经播完了 if (m_LastTrackProcesses[i] <= passedprocess) { usefultracknum.Add(i); } } else { usefultracknum.Add(i); } } } //求轨道 //for(int i=0;i< usefultracknum.Count;++i) int usetrack = -1; if (usefultracknum.Count > 0) { int index = UnityEngine.Random.Range(0, usefultracknum.Count); usetrack = usefultracknum[index]; //Debug.Log("lasttrack: " + lasttrack); //Debug.Log("usefultracknum: " + usetrack); } else { //Debug.LogError("no find usetrack "); usetrack = UnityEngine.Random.Range(0, TrackManager.instance.trackNum); } //Debug.Log("track index: " + usetrack + "lasttrack: " + lasttrack); if (usetrack == lasttrack) { Debug.LogError("error " + usetrack); } if (bs.getLength > 1) //if (true) { int numpoints = 16; Vector3[] curvepoints = new Vector3[numpoints]; float endtime = (float)bs.getEndTime; float everytime = (endtime - (float)bs.getStartTime) / numpoints; Vector3[] normals = new Vector3[numpoints]; for (int i = 0; i < curvepoints.Length; ++i) { //选取点计算的问题 每个采样点为延迟进度+花费时间/歌曲时间 //float process = m_DelayProcess + // ((float)bs.getStartTime + everytime * i) // / (m_MusicTime + m_DelayTime); float process = m_DelayProcess + ((float)bs.getStartTime + everytime * i) / (m_MusicTime); curvepoints[i] = TrackManager.instance.GetPosition(process, 0); normals[i] = TrackManager.instance.GetRotation(process, 0) * new Vector3(0, 1, 0); } float endprocess = m_DelayProcess + ((float)bs.getEndTime) / (m_MusicTime + m_DelayTime); pTile = bs.CreateTile(m_MusicTime, m_DelayTime, m_StartPressTime , CurverTouchTile.m_TileName); TrackManager.instance.PushValue(pTile, usetrack); m_LastTrackProcesses[usetrack] = endprocess; bs.CreateTileMesh(pTile, curvepoints, normals); lasttrack = usetrack; } else { float endprocess = m_DelayProcess + ((float)bs.getEndTime) / (m_MusicTime + m_DelayTime); pTile = bs.CreateTile( m_MusicTime, m_DelayTime, m_StartPressTime, NormalTouchTile.m_TileName); TrackManager.instance.PushValue(pTile, usetrack); m_LastTrackProcesses[usetrack] = endprocess; bs.CreateTileMesh(pTile); //test //if(pTile.transform.childCount==0) //{ // GameObject testobj = new GameObject(); // testobj.transform.parent = pTile.transform; // testobj.name = "track:" + usetrack; //} //else //{ // pTile.transform.GetChild(0).name = "track:" + usetrack; //} lasttrack = usetrack; } //m_RunningTiles.Add(pTile); }