private void Start() { Instance = this; if (IsNative) { InitNative(); } else { InitLocal(); } GameObject objPrefab = Resources.Load <GameObject>("Prefabs/Brick"); GameObject objBrick = Instantiate(objPrefab, transform); objBrick.name = "Ground"; objBrick.transform.GetChild(0).gameObject.layer = LayerMask.NameToLayer("Brick"); objBrick.transform.localScale = new Vector3(MaxCol, 1, MaxRow); objBrick.transform.position = new Vector3(MaxCol / 2 - 0.5f, 0, MaxRow / 2 - 0.5f); objBrick.GetComponentInChildren <Renderer>().material.mainTextureScale = new Vector2(MaxCol, MaxRow); GameObject objWallsRoot = new GameObject("WallsRoot"); objWallsRoot.transform.SetParent(transform); for (int i = 0, lenRow = Mathf.CeilToInt(MaxRow / RectMeshCreater.MaxRow); i < lenRow; ++i) { for (int j = 0, lenCol = Mathf.CeilToInt(MaxCol / RectMeshCreater.MaxCol); j < lenCol; ++j) { RectMeshCreater.GenerateParams param = new RectMeshCreater.GenerateParams() { row = RectMeshCreater.MaxRow, col = RectMeshCreater.MaxCol, startRow = i * RectMeshCreater.MaxRow, startCol = j * RectMeshCreater.MaxCol, materialPath = "Assets/Resources/Materials/WallMat.mat", objName = "Wall_" + i + "_" + j, parent = objWallsRoot.transform, cbIsGenerateCell = (cellRow, cellCol) => { if (IsNative) { return(NavLibrary.GetPointStatus(cellRow, cellCol) == 0); } NavPoint point = GetPoint(cellRow, cellCol); return(point && point.type < 1); } }; RectMeshCreater.GenerateRectObj(new Vector3(j * RectMeshCreater.MaxCol, 0.01f, i * RectMeshCreater.MaxRow), param); } } GameObject objPlayer = Instantiate(Resources.Load <GameObject>("Prefabs/Myself")); objPlayer.name = "Myself"; objPlayer.transform.position = Vector3.zero; }
void ShowRoad_Native() { if (mfPath && mfPath.gameObject.activeSelf) { mfPath.gameObject.SetActive(false); return; } if (bPathGenerated && mfPath) { mfPath.gameObject.SetActive(true); return; } dicNavWay.Clear(); int row = 0, col = 0, step = -1; int minRow = int.MaxValue, minCol = int.MaxValue, maxRow = int.MinValue, maxCol = int.MinValue; while (NavLibrary.GetPoint(++step, ref row, ref col)) { if (row < minRow) { minRow = row; } if (col < minCol) { minCol = col; } if (row > maxRow) { maxRow = row; } if (col > maxCol) { maxCol = col; } dicNavWay[NavLibrary.GetPointID(row, col)] = true; } RectMeshCreater.GenerateParams param = new RectMeshCreater.GenerateParams() { row = maxRow - minRow + 1, col = maxCol - minCol + 1, startRow = minRow, startCol = minCol, materialPath = "Assets/Resources/Materials/PathMat.mat", objName = "Path", mfOperate = mfPath, parent = MapManager.Instance.transform, cbIsGenerateCell = (cellRow, cellCol) => { return(dicNavWay.ContainsKey(NavLibrary.GetPointID(cellRow, cellCol))); } }; mfPath = RectMeshCreater.GenerateRectObj(new Vector3(minCol, 0.02f, minRow), param); mfPath.gameObject.SetActive(true); bPathGenerated = true; }