Пример #1
0
    protected override void updateRender()
    {
        base.updateRender();

        // 检测截屏
        if (this.prepareFreeze)
        {
            this.prepareFreeze = false;
            GameObject.Destroy(this.snap.sprite);
            Texture2D texture = snapScreen();
            Sprite    sprite  = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
            this.snap.sprite = sprite;
            return;
        }

        if (this.isInTransition())
        {
            // 刷新渐变
            if (this._transitionProgress > 0)
            {
                this._transitionProgress = Mathf.Max(this._transitionProgress - 1, 0);
//				Debug.Log(string.Format("this._transitionProgress {0}", this._transitionProgress));
                if (this._transitionProgress == 0)
                {
                    this._transitionProgress = -1;
                    if (this.transitionFinishCallback != null)
                    {
                        transitionFinishCallback.Invoke();
                    }
                }
            }
            switch (this._transitionType)
            {
            case TransitionType.SNAP:
                this.snap.color = new Color(1, 1, 1, this.transitionProgress);
                break;

            case TransitionType.BLACK:
                this.transBlack.color = new Color(0, 0, 0, this.transitionProgress);
                break;

            case TransitionType.WHITE:
                this.transWhite.color = new Color(1, 1, 1, this.transitionProgress);
                break;
            }
        }



        if (this.isUIRunning())
        {
            return;
        }

        // 检测切换地图
        if (!"".Equals(this.mapToLoad))
        {
            this.loadMap(this.mapToLoad);
            this.mapToLoad = "";
        }

        // 刷新角色
        this.player.GetComponent <SpritePlayer>().update();

        // 刷新事件
        foreach (GameEvent e in GameTemp.gameMap.events)
        {
            e.getEventSprite().update();
        }

        // 刷新图片
        foreach (GamePicture pic in GameTemp.gameScreen.pictures.Values)
        {
            Image      img    = this.pictures[pic.num];
            GameObject imgObj = img.gameObject;
            imgObj.GetComponent <RectTransform>().localPosition = new Vector3(pic.x, pic.y, pic.num); // 位置
            imgObj.transform.rotation = Quaternion.Euler(new Vector3(0, 0, pic.rotation));            // 旋转
            img.color = new Color(1, 1, 1, pic.opacity / 255.0f);                                     // 透明
            imgObj.transform.localScale = new Vector3(pic.zoomX, pic.zoomY, 1);                       // 缩放
        }

        // 刷新视野
        GameObject.Find("Main Camera").GetComponent <Camera>().orthographicSize = GameTemp.gameScreen.currView;

        // 刷新摄像机
        GameObject.Find("Main Camera").GetComponent <CameraControl>().update();

        // 刷新对话
        windowMessage.update();
        // 刷新选择项
        windowChoice.update();

                #if UNITY_EDITOR
        Intersection.Polygon testPolygon = GameTemp.gamePlayer.currCollider();
        Vector2 start = testPolygon.points[0];
        foreach (Vector2 point in testPolygon.points)
        {
            Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                           new Vector3(point.x, point.y, this.player.transform.position.z), Color.blue);
            start = point;
        }
        start = testPolygon.points[0];
        Vector2 end = testPolygon.points[testPolygon.length - 1];
        Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                       new Vector3(end.x, end.y, this.player.transform.position.z), Color.blue);

        testPolygon = GameTemp.gamePlayer.currMidCollider();
        start       = testPolygon.points[0];
        foreach (Vector2 point in testPolygon.points)
        {
            Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                           new Vector3(point.x, point.y, this.player.transform.position.z), Color.yellow);
            start = point;
        }
        start = testPolygon.points[0];
        end   = testPolygon.points[testPolygon.length - 1];
        Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                       new Vector3(end.x, end.y, this.player.transform.position.z), Color.yellow);


        foreach (Intersection.Polygon polygon in GameTemp.gameMap.mapInfo.passageColliders)
        {
            start = polygon.points[0];
            foreach (Vector2 point in polygon.points)
            {
                Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                               new Vector3(point.x, point.y, this.player.transform.position.z), Color.red);
                start = point;
            }
            start = polygon.points[0];
            end   = polygon.points[polygon.length - 1];
            Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                           new Vector3(end.x, end.y, this.player.transform.position.z), Color.red);
        }


        foreach (GameEvent e in GameTemp.gameMap.events)
        {
            Intersection.Polygon polygon = e.currCollider();
            start = polygon.points[0];
            foreach (Vector2 point in polygon.points)
            {
                Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                               new Vector3(point.x, point.y, this.player.transform.position.z), Color.green);
                start = point;
            }
            start = polygon.points[0];
            end   = polygon.points[polygon.length - 1];
            Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                           new Vector3(end.x, end.y, this.player.transform.position.z), Color.green);

            polygon = e.currMidCollider();
            start   = polygon.points[0];
            foreach (Vector2 point in polygon.points)
            {
                Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                               new Vector3(point.x, point.y, this.player.transform.position.z), Color.green);
                start = point;
            }
            start = polygon.points[0];
            end   = polygon.points[polygon.length - 1];
            Debug.DrawLine(new Vector3(start.x, start.y, this.player.transform.position.z),
                           new Vector3(end.x, end.y, this.player.transform.position.z), Color.green);
        }
                #endif
    }