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 }