“In a sunlit forest, a blue cat and Pikachu are engaged in an intense battle. The blue cat’s fur glistens in the sunlight, its eyes sharp as it swipes with its claws. Pikachu stands on a rock, its cheeks sparkling with electricity, ready to unleash a powerful thunderbolt. The background features tall trees with sunlight filtering through the leaves, creating a dappled effect. The entire scene is dynamic and full of energy, with vibrant colors and intricate details.”
var isOrthographic = camera.orthographic; if(isOrthographic) { // 转换为射线 for (int i = 0; i < ViewPortPoints.Length; i++) { Ray ray = camera.ViewportPointToRay(ViewPortPoints[i]); var rayCastToPoint = ray.origin + ray.direction * camera.farClipPlane; var rayCastData = new KeyValuePair<Vector3, Vector3>(ray.origin, rayCastToPoint); rayCastDataList.Add(rayCastData); } } else { var radio = camera.farClipPlane / cameraNearClipPlane; var cameraPosition = camera.transform.position;
// 获取饰扣四个角的屏幕映射世界坐标 var lbNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[0]); var ltNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[1]); var rtNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[2]); var rbNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[3]); var ctNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[4]);
var lbNearPlaneCameraWorldPointDir = lbNearPlaneWorldPoints - cameraPosition; var ltNearPlaneCameraWorldPointDir = ltNearPlaneWorldPoints - cameraPosition; var rtNearPlaneCameraWorldPointDir = rtNearPlaneWorldPoints - cameraPosition; var rbNearPlaneCameraWorldPointDir = rbNearPlaneWorldPoints - cameraPosition; var ctNearPlaneCameraWorldPointDir = ctNearPlaneWorldPoints - cameraPosition;
var lbFarPlaneWorldPoint = cameraPosition + lbNearPlaneCameraWorldPointDir * radio; var ltFarPlaneWorldPoint = cameraPosition + ltNearPlaneCameraWorldPointDir * radio; var rtFarPlaneWorldPoint = cameraPosition + rtNearPlaneCameraWorldPointDir * radio; var rbFarPlaneWorldPoint = cameraPosition + rbNearPlaneCameraWorldPointDir * radio; var ctFarPlaneWorldPoint = cameraPosition + ctNearPlaneCameraWorldPointDir * radio;
var lbRayCastData = new KeyValuePair<Vector3, Vector3>(lbNearPlaneWorldPoints, lbFarPlaneWorldPoint); var ltRayCastData = new KeyValuePair<Vector3, Vector3>(ltNearPlaneWorldPoints, ltFarPlaneWorldPoint); var rtRayCastData = new KeyValuePair<Vector3, Vector3>(rtNearPlaneWorldPoints, rtFarPlaneWorldPoint); var rbRayCastData = new KeyValuePair<Vector3, Vector3>(rbNearPlaneWorldPoints, rbFarPlaneWorldPoint); var ctRayCastData = new KeyValuePair<Vector3, Vector3>(ctNearPlaneWorldPoints, ctFarPlaneWorldPoint); rayCastDataList.Add(lbRayCastData); rayCastDataList.Add(ltRayCastData); rayCastDataList.Add(rtRayCastData); rayCastDataList.Add(rbRayCastData); rayCastDataList.Add(ctRayCastData); } returntrue; }
///<summary> /// 区域顶点 ///</summary> [Header("区域顶点")] public Vector3 AreaPoint = Vector3.zero;
///<summary> /// 区域法线 ///</summary> [Header("区域法线")] public Vector3 AreaNormal = Vector3.up;
///<summary> /// 更新摄像机指定平面映射区域数据 ///</summary> publicvoidUpdateAreaDatas() { CameraUtilities.GetCameraRayCastDataList(mCameraComponent, ref mRayCastDataList); CameraUtilities.GetCameraVisibleArea(mCameraComponent, AreaPoint, AreaNormal, ref mAreaPointsList, ref mRectAreaPointsList); mAreaLinesList.Clear(); mRectAreaLinesList.Clear(); if(mAreaPointsList.Count > 0) { var lbToLtLine = new KeyValuePair<Vector3, Vector3>(mAreaPointsList[0], mAreaPointsList[1]); var ltToRtLine = new KeyValuePair<Vector3, Vector3>(mAreaPointsList[1], mAreaPointsList[2]); var rtToRbLine = new KeyValuePair<Vector3, Vector3>(mAreaPointsList[2], mAreaPointsList[3]); var rbToLbLine = new KeyValuePair<Vector3, Vector3>(mAreaPointsList[3], mAreaPointsList[0]); mAreaLinesList.Add(lbToLtLine); mAreaLinesList.Add(ltToRtLine); mAreaLinesList.Add(rtToRbLine); mAreaLinesList.Add(rbToLbLine);
var rectLbToLtLine = new KeyValuePair<Vector3, Vector3>(mRectAreaPointsList[0], mRectAreaPointsList[1]); var rectLtToRtLine = new KeyValuePair<Vector3, Vector3>(mRectAreaPointsList[1], mRectAreaPointsList[2]); var rectRtToRbLine = new KeyValuePair<Vector3, Vector3>(mRectAreaPointsList[2], mRectAreaPointsList[3]); var rectRbToLbLine = new KeyValuePair<Vector3, Vector3>(mRectAreaPointsList[3], mRectAreaPointsList[0]); mRectAreaLinesList.Add(rectLbToLtLine); mRectAreaLinesList.Add(rectLtToRtLine); mRectAreaLinesList.Add(rectRtToRbLine); mRectAreaLinesList.Add(rectRbToLbLine); } }
var isOrthographic = camera.orthographic; if(isOrthographic) { // 转换为射线 for (int i = 0; i < ViewPortPoints.Length; i++) { Ray ray = camera.ViewportPointToRay(ViewPortPoints[i]); var rayCastToPoint = ray.origin + ray.direction * camera.farClipPlane; var rayCastData = new KeyValuePair<Vector3, Vector3>(ray.origin, rayCastToPoint); rayCastDataList.Add(rayCastData); } } else { var radio = camera.farClipPlane / cameraNearClipPlane; var cameraPosition = camera.transform.position;
// 获取饰扣四个角的屏幕映射世界坐标 var lbNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[0]); var ltNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[1]); var rtNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[2]); var rbNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[3]); var ctNearPlaneWorldPoints = camera.ViewportToWorldPoint(ViewPortPoints[4]);
var lbNearPlaneCameraWorldPointDir = lbNearPlaneWorldPoints - cameraPosition; var ltNearPlaneCameraWorldPointDir = ltNearPlaneWorldPoints - cameraPosition; var rtNearPlaneCameraWorldPointDir = rtNearPlaneWorldPoints - cameraPosition; var rbNearPlaneCameraWorldPointDir = rbNearPlaneWorldPoints - cameraPosition; var ctNearPlaneCameraWorldPointDir = ctNearPlaneWorldPoints - cameraPosition;
var lbFarPlaneWorldPoint = cameraPosition + lbNearPlaneCameraWorldPointDir * radio; var ltFarPlaneWorldPoint = cameraPosition + ltNearPlaneCameraWorldPointDir * radio; var rtFarPlaneWorldPoint = cameraPosition + rtNearPlaneCameraWorldPointDir * radio; var rbFarPlaneWorldPoint = cameraPosition + rbNearPlaneCameraWorldPointDir * radio; var ctFarPlaneWorldPoint = cameraPosition + ctNearPlaneCameraWorldPointDir * radio;
var lbRayCastData = new KeyValuePair<Vector3, Vector3>(lbNearPlaneWorldPoints, lbFarPlaneWorldPoint); var ltRayCastData = new KeyValuePair<Vector3, Vector3>(ltNearPlaneWorldPoints, ltFarPlaneWorldPoint); var rtRayCastData = new KeyValuePair<Vector3, Vector3>(rtNearPlaneWorldPoints, rtFarPlaneWorldPoint); var rbRayCastData = new KeyValuePair<Vector3, Vector3>(rbNearPlaneWorldPoints, rbFarPlaneWorldPoint); var ctRayCastData = new KeyValuePair<Vector3, Vector3>(ctNearPlaneWorldPoints, ctFarPlaneWorldPoint); rayCastDataList.Add(lbRayCastData); rayCastDataList.Add(ltRayCastData); rayCastDataList.Add(rtRayCastData); rayCastDataList.Add(rbRayCastData); rayCastDataList.Add(ctRayCastData); } returntrue; }
///<summary> /// 区域顶点 ///</summary> [Header("区域顶点")] public Vector3 AreaPoint = Vector3.zero;
///<summary> /// 区域法线 ///</summary> [Header("区域法线")] public Vector3 AreaNormal = Vector3.up;
///<summary> /// 更新摄像机指定平面映射区域数据 ///</summary> publicvoidUpdateAreaDatas() { CameraUtilities.GetCameraRayCastDataList(mCameraComponent, ref mRayCastDataList); CameraUtilities.GetCameraVisibleArea(mCameraComponent, AreaPoint, AreaNormal, ref mAreaPointsList, ref mRectAreaPointsList); mAreaLinesList.Clear(); mRectAreaLinesList.Clear(); if(mAreaPointsList.Count > 0) { var lbToLtLine = new KeyValuePair<Vector3, Vector3>(mAreaPointsList[0], mAreaPointsList[1]); var ltToRtLine = new KeyValuePair<Vector3, Vector3>(mAreaPointsList[1], mAreaPointsList[2]); var rtToRbLine = new KeyValuePair<Vector3, Vector3>(mAreaPointsList[2], mAreaPointsList[3]); var rbToLbLine = new KeyValuePair<Vector3, Vector3>(mAreaPointsList[3], mAreaPointsList[0]); mAreaLinesList.Add(lbToLtLine); mAreaLinesList.Add(ltToRtLine); mAreaLinesList.Add(rtToRbLine); mAreaLinesList.Add(rbToLbLine);
var rectLbToLtLine = new KeyValuePair<Vector3, Vector3>(mRectAreaPointsList[0], mRectAreaPointsList[1]); var rectLtToRtLine = new KeyValuePair<Vector3, Vector3>(mRectAreaPointsList[1], mRectAreaPointsList[2]); var rectRtToRbLine = new KeyValuePair<Vector3, Vector3>(mRectAreaPointsList[2], mRectAreaPointsList[3]); var rectRbToLbLine = new KeyValuePair<Vector3, Vector3>(mRectAreaPointsList[3], mRectAreaPointsList[0]); mRectAreaLinesList.Add(rectLbToLtLine); mRectAreaLinesList.Add(rectLtToRtLine); mRectAreaLinesList.Add(rectRtToRbLine); mRectAreaLinesList.Add(rectRbToLbLine); } }
VisualElement labelWithStyle = new Label("USS Using Label Type Selector!");
Class Selctor
1 2 3 4 5 6 7
VisualElement smallLabelWithStyle = new Label("USS Using SmallLabel Class Selector!"); smallLabelWithStyle.AddToClassList("SmallLabel"); VisualElement bigLabelWithStyle = new Label("USS Using BigLabel Class Selector!"); smallLabelWithStyle.AddToClassList("BigLabel"); VisualElement labelWithStyle = new Label("USS Using Label Type Selector!"); VisualElement boldLabelWithStyle = new Label("USS Using BoldLabel Class Selector!"); boldLabelWithStyle.AddToClassList("BoldLabel");
Name Selector
1 2 3
Button ussCenterButton = new Button(); ussCenterButton.name = "CenterButton"; ussCenterButton.text = "Center USS Button Name Selector";
---@class CS.UnityEngine.Object : CS.System.Object local Object = {} ---@field public name string @ ---@field public hideFlags number @ ---@return number @ function Object:GetInstanceID() end
---@return number @ function Object:GetHashCode() end
---@param other CS.System.Object @ ---@return boolean @ function Object:Equals(other) end
---@return string @ function Object:ToString() end
---@param original CS.UnityEngine.Object @ ---@param position CS.UnityEngine.Vector3 @ ---@param rotation CS.UnityEngine.Quaternion @ ---@return CS.UnityEngine.Object @ function Object.Instantiate(original, position, rotation) end
---@param original CS.UnityEngine.Object @ ---@param position CS.UnityEngine.Vector3 @ ---@param rotation CS.UnityEngine.Quaternion @ ---@param parent CS.UnityEngine.Transform @ ---@return CS.UnityEngine.Object @ function Object.Instantiate(original, position, rotation, parent) end
---@param original CS.UnityEngine.Object @ ---@return CS.UnityEngine.Object @ function Object.Instantiate(original) end
---@param original CS.UnityEngine.Object @ ---@param parent CS.UnityEngine.Transform @ ---@return CS.UnityEngine.Object @ function Object.Instantiate(original, parent) end
---@param original CS.UnityEngine.Object @ ---@param parent CS.UnityEngine.Transform @ ---@param instantiateInWorldSpace boolean @ ---@return CS.UnityEngine.Object @ function Object.Instantiate(original, parent, instantiateInWorldSpace) end
---@param obj CS.UnityEngine.Object @ ---@param t number @ function Object.Destroy(obj, t) end
---@param obj CS.UnityEngine.Object @ function Object.Destroy(obj) end
---@param obj CS.UnityEngine.Object @ ---@param allowDestroyingAssets boolean @ function Object.DestroyImmediate(obj, allowDestroyingAssets) end
---@param obj CS.UnityEngine.Object @ function Object.DestroyImmediate(obj) end
---@param type CS.System.Type @ ---@return CS.UnityEngine.Object[] @ function Object.FindObjectsOfType(type) end
---@param type CS.System.Type @ ---@param includeInactive boolean @ ---@return CS.UnityEngine.Object[] @ function Object.FindObjectsOfType(type, includeInactive) end
---@param target CS.UnityEngine.Object @ function Object.DontDestroyOnLoad(target) end
---@param type CS.System.Type @ ---@return CS.UnityEngine.Object @ function Object.FindObjectOfType(type) end
---@param type CS.System.Type @ ---@param includeInactive boolean @ ---@return CS.UnityEngine.Object @ function Object.FindObjectOfType(type, includeInactive) end
///<summary> /// 响应Task等待按钮点击 ///</summary> privateasyncvoidOnBtnAwaitTaskUsingClick() { var awaitTask = Task.Run(AwaitTaskAction); Debug.Log($"AwaitTaskAction has been launched. Main Thread:{Thread.CurrentThread.ManagedThreadId}"); var sumResult = await awaitTask; Debug.Log($"sumResult:{sumResult}"); Debug.Log($"DateTime.Now.Millisecond:{DateTime.Now.Millisecond}"); }
///<summary> /// 等待的Task方法 ///</summary> ///<returns></returns> privateasync Task<int> AwaitTaskAction() { Debug.Log($"AwaitTaskAction Start"); Debug.Log($"DateTime.Now.Millisecond:{DateTime.Now.Millisecond}"); await Task.Delay(1); Debug.Log($"AwaitTaskAction After Task.Delay(1)"); Debug.Log($"DateTime.Now.Millisecond:{DateTime.Now.Millisecond}"); int sum = 0; for(int i = 0; i < 1000000000; i++) { sum++; } Debug.Log($"AwaitTaskAction End"); Debug.Log($"DateTime.Now.Millisecond:{DateTime.Now.Millisecond}"); return sum; }