unity学习笔记-读取安卓本地文件的路径、真机调试、音频播放的bug以及双指控制摄像机缩放

读取安卓本地文件的路径

https://blog.csdn.net/yy1042001041/article/details/77278075
注意帖子里的路径文件前少了一个斜杠/
不加在真机调试的时候会出bug

真机调试

https://blog.csdn.net/aawoe/article/details/78578850?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=1329188.8670.16178487225019581&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control

https://blog.csdn.net/qq_15020543/article/details/85028308
这两个帖子就可以完成

2021.9.8更新
真机调试需要的工具包在网上直接搜platform-tool就可以了,下载官网的然后放在任意非中文路径下即可
然后就是和上面帖子里一样的操作
由于unity已经帮我们配好了安卓的环境,所以只要你能打包apk,真机调试就一定是可以的

adb forward tcp:34999 localabstract:Unity-包名

音频播放的bug

在调用服务器上的音频时,如果音频在前端显示的格式是加粗样式
这样的,那么使用www.getaudioclip(true,true,audio.mpeg)这个方法直接读取就能播放完整了
但是如果是
在这里插入图片描述
这种的话,那么用上面的方法你会发现播放的音频是不完整的,而且写入到本地的时候用播放器打开播放也是完整的。但是本地写入后如果还是用www.getaudioclip这个方法去访问本地的音频文件,依旧会有这个问题
这个时候,我尝试了用www的另一个方法getaudioclipcompressed()方法,就能播放完整了
问题应该是出在音频格式上,针对不同的格式,不同的方法读取的方式可能有所不同
顺带一提,网上说MP3其实也是mpeg的一种,但是mpeg实际上好像偏视频格式多一点,可能MP3只是mpeg里的小分支吧,所以用getaudiocilp方法里的audiotype.mpeg里显示是有mp3格式的

双指控制摄像机缩放

https://www.pianshen.com/article/99201245583/

参考的是这个帖子里相机的fieldofview属性,通过mathf.lerp方法控制缩放的阈值

if (Input.touchCount > 1)
        {
            //两次触摸都有滑动
            if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved)
            {
                //获取第一、二次两次触摸的位置
                Vector2 tempPosition1 = Input.GetTouch(0).position;
                Vector2 tempPosition2 = Input.GetTouch(1).position;
                //放大
                if (isEnlarge(oldPosition1, oldPosition2, tempPosition1, tempPosition2))
                {
                    /*float oldScaleX = model.transform.localScale.x;
                    float oldScaleY = model.transform.localScale.y;
                    float oldScaleZ = model.transform.localScale.z;
                    float newScale = 1.025f;*/
                    //model.transform.localScale = new Vector3(oldScaleX*newScale, oldScaleY* newScale, oldScaleZ*newScale);
                    test.fieldOfView = Mathf.Lerp(test.fieldOfView, 52, 0.1f);
                }
                else//缩小
                {
                    //model.transform.localScale = new Vector3(oldScaleX / newScale, oldScaleY / newScale, oldScaleZ / newScale);
                    test.fieldOfView = Mathf.Lerp(test.fieldOfView, 90, 0.1f);

                }
                //备份上一次触摸点的位置,用于对比   
                oldPosition1 = tempPosition1;
                oldPosition2 = tempPosition2;
            }
        }
        bool isEnlarge(Vector2 oP1, Vector2 oP2, Vector2 nP1, Vector2 nP2)
        {
            //函数传入上一次触摸两点的位置与本次触摸两点的位置计算出用户的手势   
            var leng1 = Mathf.Sqrt((oP1.x - oP2.x) * (oP1.x - oP2.x) + (oP1.y - oP2.y) * (oP1.y - oP2.y));
            var leng2 = Mathf.Sqrt((nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y - nP2.y));
            if (leng1 < leng2)
            {
                //放大手势   
                return true;
            }
            else
            {
                //缩小手势   
                return false;
            }
        }

这是全部代码
里面需要的对象在一开始创建就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值