Unity Android端操作-显示/影藏+旋转+放大缩小+截图的脚步代码
显示/影藏
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | //获取操作对象 public GameObject text; //初始旋转角度 public float xspeed = 120; void Start() { } // Update is called once per frame void Update() { MySetActive(); } //手指点击关闭显示 void MySetActive() { //点击 if (Input.GetMouseButton(0)) { //一个手指点击 if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began) { text.SetActive( false ); //2个点击 if (Input.GetTouch(0).tapCount == 2) { text.SetActive( true ); //显示 } } } } |
旋转+放大缩小
using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnLargeLogic : MonoBehaviour { //初始操作手指位置 Vector2 oldPos1; Vector2 oldPos2; //文字对象 private TextMesh textMesh; //初始旋转角度 public float xspeed = 120; void Start() { this.textMesh = this.GetComponentInParent<TextMesh>(); } // Update is called once per frame void Update() { //2根手指触摸 if (Input.touchCount == 2) { //判断手指移动 Moved==移动 if (Input.GetTouch(0).phase==TouchPhase.Moved|| Input.GetTouch(1).phase == TouchPhase.Moved) { //第一个手指位置 Vector2 temPos1 = Input.GetTouch(0).position; //第二个手指位置 Vector2 temPos2 = Input.GetTouch(1).position; //获取xyz坐标值 float this_x = this.transform.localScale.x; float this_y = this.transform.localScale.y; float this_z = this.transform.localScale.z; if (isEnLarge(oldPos1,oldPos2,temPos1,temPos2)) { this.transform.localScale = new Vector3(this_x * 1.025f, this_y * 1.025f, this_z * 1.025f); } else { this.transform.localScale = new Vector3(this_x / 1.025f, this_y / 1.025f, this_z / 1.025f); } //更新操作后的值 oldPos1 = temPos1; oldPos2 = temPos2; } } //单击旋转执行 MyRotate(); } //判断手势是否是方大 bool isEnLarge(Vector2 oP1, Vector2 oP2, Vector2 nP1, Vector2 nP2) { //x差值平方+y差值平方 float length1 = Mathf.Sqrt((oP1.x-oP2.x)* (oP1.x - oP2.x)+ (oP1.y - oP2.y) * (oP1.y - oP2.y)); float length2 = Mathf.Sqrt((nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y - nP2.y)); //判断oP1平方根是否大于nP1 if (length1 < length2) { return true; } else { return false; } } //旋转 void MyRotate() { //按下 if (Input.GetMouseButton(0)) { //单击 if (Input.touchCount == 1) { //滑动 if (Input.GetTouch(0).phase == TouchPhase.Moved) { //旋转(以Y轴) this.textMesh.transform.Rotate(Vector3.up * Input.GetAxis("Mouse X") * xspeed * Time.deltaTime, Space.Self); } } } } }
截图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using UnityEngine.UI; public class ScreenshotLogic : MonoBehaviour { //截屏 //主相机对象 private Camera arCamera; void Start() { //获取主相机对象 arCamera = GameObject.Find( "ARCamera" ).GetComponent<Camera>(); } void Update() { } //截屏保存 --不包含UI的 public void OnScreenshotClick() { //获取系统当前时间 编辑成字符串形式 System.DateTime now = System.DateTime.Now; //转字符串类型 string time = now.ToString(); //去掉空格 time = time.Trim(); //替换符号 time = time.Replace( "/" , "-" ); //拼接成完整图片名称 string fileName = "ARScreenShot" + time + ".png" ; //判断是否是Android手机操作 if (Application.platform == RuntimePlatform.Android) { //只获取主相机的画面 //新建截屏对象赋值给主相机操作 RenderTexture rt = new RenderTexture(Screen.width,Screen.height,1); arCamera.targetTexture = rt; //渲染 arCamera.Render(); //渲染纹理 RenderTexture.active = rt; //保存截图到填图上 材质:TextureFormat.RGB24,是否映射:false Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false ); //读取填图 Rect:坐标 texture.ReadPixels( new Rect(0, 0, Screen.width, Screen.height), 0, 0); //应用保存 texture.Apply(); //关闭截屏 arCamera.targetTexture = null ; RenderTexture.active = null ; Destroy(rt); //将填图转换为数组 byte [] bytes = texture.EncodeToPNG(); //保存路径 手机相册截图地址 string destination = "/sdcard/DCIM/Camera" ; //判断地址是否存在 if (!Directory.Exists(destination)) { //创建地址 Directory.CreateDirectory(destination); } //拼接保存地址 string pathSave = destination + "/" + fileName; Debug.Log(pathSave); //文件写入==保存 File.WriteAllBytes(pathSave, bytes); } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!