Пример #1
0
    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;
    }
Пример #2
0
    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;
    }