private void CreateTrainsByData() { DebugLog("CreateTrainsByData() start."); DestroyTrainDisplayObjects(); foreach (TrainData td in m_TrainData.Values) { bool skip = false; DebugLog("m_DisplayEditorMode=" + m_DisplayEditorMode.ToString()); DebugLog("m_RecreateTrainKeyword=" + m_RecreateTrainKeyword); // 圖示 string textureName = ""; if (true == m_TrainTypeTextureMap.ContainsKey(td.TypeStr)) { textureName = m_TrainTypeTextureMap[td.TypeStr]; } Texture2D trainTexture = (Texture2D)Resources.Load(textureName, typeof(Texture2D)); if (null == trainTexture) { Debug.LogError("CreateTrainsByData() trainTexture load failed=" + textureName); return; } switch (m_DisplayEditorMode) { case DisplayEditorMode.NearStation: int stationid_i = 0; int stationid_j = 0; if (true == FindTrainBetween(td, ref stationid_i, ref stationid_j)) { Dictionary <int, StationData> stationDataVec = m_Stations; DebugLog("i ].DisplayName" + stationDataVec[stationid_i].DisplayName); DebugLog("j ].DisplayName" + stationDataVec[stationid_j].DisplayName); if (m_RecreateTrainKeyword != stationDataVec[stationid_i].DisplayName && m_RecreateTrainKeyword != stationDataVec[stationid_j].DisplayName) { skip = true; } } break; case DisplayEditorMode.SpecifiedTrain: if (td.DisplayName != m_RecreateTrainKeyword) { skip = true; } break; case DisplayEditorMode.AllTrains: // do nothing , all pass. break; case DisplayEditorMode.NoTrain: return; // do nothing at all } if (true == skip) { continue; } string objName = "Train_" + td.DisplayName + "(" + td.ID + ")"; DebugLog("CreateTrainsByData() ." + td.ID); GameObject trainObj = new GameObject(objName); float trainSize = 32.0f; GUITexture guiTexture = trainObj.AddComponent <GUITexture>(); if (null != guiTexture) { trainObj.transform.position = new Vector3(0, 0, m_TrainLayerZShift); trainObj.transform.localScale = new Vector3(0, 0, 1); guiTexture.texture = trainTexture; guiTexture.pixelInset = new Rect(-1 * trainSize / 2, -1 * trainSize / 2, trainSize, trainSize); } GameObject textObj = new GameObject(objName + "_Text"); GUIText guiText = textObj.AddComponent <GUIText>(); if (null != guiText) { guiText.fontSize = 24; guiText.material.color = Color.white; guiText.text = td.DisplayName; guiText.pixelOffset = new Vector2( 1 * trainSize / 2, 0); } textObj.transform.parent = trainObj.transform; textObj.transform.localPosition = new Vector3(0, 0, m_TrainLayerZShift + 1); TrainDisplay tDisplay = new TrainDisplay(); tDisplay.ID = td.ID; tDisplay.Obj = trainObj; m_TrainDisplay.Add(tDisplay.ID, tDisplay); } DebugLog("CreateTrainsByData() ended."); }
private void CreateTrainsByData() { Debug.Log("CreateTrainsByData() start."); DestroyTrainDisplayObjects(); Object prefab = Resources.Load("TrainPrefab"); if (null == prefab) { Debug.LogError("CreateTrainsByData() CubePrefab load failed="); return; } Object textMeshPrefab = Resources.Load("TextMeshPrefab"); if (null == textMeshPrefab) { Debug.LogError("CreateTrainsByData() textMeshPrefab load failed"); return; } if (null != this.pCameraControl && m_DisplayEditorMode != DisplayEditorMode.SpecifiedTrain) { this.pCameraControl.trackingObject = null; } foreach (TrainData td in m_TrainData.Values) { bool skip = false; Debug.Log("m_DisplayEditorMode=" + m_DisplayEditorMode.ToString()); Debug.Log("m_RecreateTrainKeyword=" + m_RecreateTrainKeyword); Dictionary <int, StationData> stationDataVec = m_Stations; switch (m_DisplayEditorMode) { case DisplayEditorMode.NearStation: int stationid_i = 0; int stationid_j = 0; if (true == FindTrainBetween(td, ref stationid_i, ref stationid_j)) { // Debug.Log( "i ].DisplayName" + stationDataVec[ stationid_i ].DisplayName ) ; // Debug.Log( "j ].DisplayName" + stationDataVec[ stationid_j ].DisplayName ) ; if (m_RecreateTrainKeyword != stationDataVec[stationid_i].DisplayName && m_RecreateTrainKeyword != stationDataVec[stationid_j].DisplayName) { skip = true; } } break; case DisplayEditorMode.SpecifiedTrain: if (td.DisplayName != m_RecreateTrainKeyword) { skip = true; } break; case DisplayEditorMode.AllTrains: // do nothing , all pass. break; case DisplayEditorMode.NoTrain: return; // do nothing at all } if (true == skip) { continue; } // 圖示 string textureName = ""; if (true == m_TrainTypeTextureMap.ContainsKey(td.TypeStr)) { textureName = m_TrainTypeTextureMap[td.TypeStr]; } Texture2D trainTexture = (Texture2D)Resources.Load(textureName, typeof(Texture2D)); if (null == trainTexture) { Debug.LogError("CreateTrainsByData() trainTexture load failed=" + textureName); continue; } string objName = "Train_" + td.DisplayName + "(" + td.ID + ")"; Debug.Log("CreateTrainsByData() ." + objName); GameObject trainObj = (GameObject)GameObject.Instantiate(prefab); trainObj.name = objName; Renderer renderer = trainObj.GetComponent <Renderer>(); if (null != renderer) { trainObj.transform.position = new Vector3(0, 0, m_TrainLayerZShift); renderer.material = new Material(Shader.Find(" Diffuse")); renderer.material.mainTexture = trainTexture; } GameObject textObj = (GameObject)GameObject.Instantiate(textMeshPrefab); textObj.name = objName + "_Text"; TextMesh textMesh = textObj.GetComponent <TextMesh>(); if (null != textMesh) { textMesh.text = td.DisplayName; } textObj.transform.parent = trainObj.transform; textObj.transform.localPosition = Vector3.zero; textObj.transform.localScale = new Vector3(-0.5f, -0.5f, 1); TrainDisplay tDisplay = new TrainDisplay(); tDisplay.ID = td.ID; tDisplay.Obj = trainObj; m_TrainDisplay.Add(tDisplay.ID, tDisplay); if (null != this.pCameraControl && m_DisplayEditorMode == DisplayEditorMode.SpecifiedTrain) { Debug.Log("td.ID "); this.pCameraControl.trackingObject = tDisplay.Obj; } } Debug.Log("CreateTrainsByData() ended."); }