RenderToCubemap —— 生成Cubemap 静态贴图
RenderWithShader —— 使用其他Shader渲染
使用指定的shader来代替当前物体的shader渲染一帧。当replacementTag为空时会替换视口中所有物体的shader
setReplacementShader与此方法相近,但不是只渲染一帧
ScreenPointToRay
近视口到屏幕的射线。参考点position用实际像素值的方式来决定Ray到屏幕的位置。参考点position的X轴分量或Y轴分量从0增长到最大值时,ray从屏幕一边移动到另一边
using UnityEngine; using System.Collections; public class ScreenPointToRay_ts : MonoBehaviour { Ray ray; RaycastHit hit; Vector3 v3 = new Vector3(Screen.width / 2.0f, Screen.height / 2.0f, 0.0f); Vector3 hitpoint = Vector3.zero; void Update() { // 射线沿着屏幕x轴从左向右循环扫描 v3.x = v3.x >= Screen.width ? 0.0f : v3.x + 1.0f; // 生成射线 ray = camera.ScreenPointToRay(v3); if (Physics.Raycast(ray, out hit, 100.0f)) { // 绘制线,在scene试图中可见 Debug.DrawLine(ray.origin, hit.point, Color.green); // 输出射线探测到物体的名称 Debug.Log("é???ì?2aμ?μ???ì???3?£o" + hit.transform.name); } } }
ScreenToViewportPoint —— 实现坐标点position从屏幕坐标系向摄像机视口单位化坐标系转换,单位为像素
ScreenToWorldPoint —— 将参考点position从屏幕坐标系转换到世界坐标系,实际单位
SetTargetBuffers —— 重设摄像机到TargetTexture的渲染
ViewportPointToRay —— 近视口到屏幕的射线
ViewportToWorldPoint —— 实现从camera视口坐标点向世界坐标点转换
此方法的返回值大小受当前camera在世界坐标系中的位置camera的fieldOfView值以及参考点的position共同影响
WorldToScreenPoint
从世界坐标点向屏幕坐标点转换,即坐标点position投射到屏幕上的坐标值,返回值的x和y分量是以屏幕左下角为(0,0)点,以向上为y轴,向右为x轴来计算的
using UnityEngine; using System.Collections; public class WorldToScreenPoint_ts : MonoBehaviour { public Transform cb, sp; public Texture2D t2; Vector3 v3 = Vector3.zero; float sg; void Start() { // 记录屏幕高度 sg = Screen.height; } void Update() { // sp 绕着cb的y轴旋转 sp.RotateAround(cb.position, cb.up, 30.0f * Time.deltaTime); // 获取sp在屏幕上的坐标点 v3 = camera.WorldToScreenPoint(sp.position); } void OnGUI() { // 绘制纹理 GUI.DrawTexture(new Rect(0.0f, sg - v3.y, v3.x, sg), t2); } }
WorldToViewportPoint
把三维坐标点position从世界坐标系转换到屏幕的单位化坐标系中,即世界坐标点position投射到屏幕上的坐标点的x,y分量所占屏幕宽高的比例大小。
camera 视口用来记录当前摄像机能看到场景中的哪些内容,其大小及位置是可以改变的
屏幕视口是指当前硬件的屏幕,对于一个固定的硬件(如手机),它的屏幕视口大小(分辨率)是固定的
camera视口的内容不一定可以完全显示在屏幕上,屏幕可能只显示其一部分内容
Game面板的aspect选项是用来模拟硬件屏幕的,可分为3类:全屏显示,固定比例显示和固定分辨率显示