Unity开发中遇到的问题以及解决思路 Ver1.0

news2024/10/7 6:40:03

文章目录

  • Git
    • 1.明明连接成功了,为什么显示仓库不存在?
  • UI
    • 1.从Resources加载图片:路径没错却加载为空?
    • 2.滚动页面想让他只在纵向或者横向滚动怎么办?
    • 3.滚动页面的元素是从中间向两边生成怎么办?
    • 4.如何让ui物体不受射线检测
    • 5.如何让物体上的贴图和某些特效贴图融合(背景贴图和弹痕贴图融合)
    • 6.Screen position out of view frustum (screen pos 0.000000, 0.000000, 2210299.750000) (Camera rect 0 0 256 256)
  • 网络相关
    • 1.如何看自己电脑的ip地址
  • 组件方面
    • 1.如何控制摄像机视野,实现模拟开镜?
    • 2.如何使用多相机,让一个相机观察主角,其他相机观察别的?
      • 调整可观察的物体
      • 调整相机观察优先级
    • 3.动作切换后下个动作比较慢怎么办?(射击的动作感觉比较缓慢,没有力度)
    • 4.游戏物体在场景视图显示,在游戏视图不显示,这是为什么?
    • 5.设置刚体的游戏物体,使用代码没法通过transform组件改变他的位置,怎么办?
    • 6.空物体放到枪械模型下方,模型运动,空物体并不会跟随动作改变位置,怎么办?
    • 7.装有刚体的物体速度太快,其他碰撞体检测不到,怎么办?
    • 8.使用射线检测碰撞在对应物体身上生成特效时,特效在某些角度显示不清楚怎么办?
    • 9.没有报错,却没实现想要的功能
    • 10.使用Resources反复存储读取json时,出现数据不同步的情况
    • 11.使用io读写resources里的文件,打包后找不到路径怎么办?
      • gpt的处理方式
      • 解决方法
      • DLC:关于 persistentDataPath(把数据存储到AppData文件夹下)
  • 动画
    • 1.空物体放到人物模型下方,模型运动,空物体并不会跟随动作改变位置,怎么办?
    • 2.使用布娃娃系统模拟死亡效果,效果太夸张,怎么办?
  • 导航
    • 1.在导航的过程中,使用transform.lookAt()转向不够平滑,怎么优化?
    • 2.导航物体默认会忽略物理系统,穿过碰撞体,怎么办?
  • 优化
    • 1.当从重置场景跳转回游戏场景的时候场景变暗,怎么办?
  • Lua
    • 1.Scite 配置字体大小

Git

1.明明连接成功了,为什么显示仓库不存在?

报错信息:\342\200\234git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

看看你引号大小写对不对。" "还是“ ”

UI

1.从Resources加载图片:路径没错却加载为空?

private Image item_Image;       //物品图标.
item_Image.sprite = Resources.Load<Sprite>("Demo/SignPanel/TexTures/item/" + itemName);

一定要查找Sprite,赋值给sprite属性,别弄错了。否则会出现查找为空。

还有别忘了写末尾的/;

2.滚动页面想让他只在纵向或者横向滚动怎么办?

在这里插入图片描述

勾下这俩。

3.滚动页面的元素是从中间向两边生成怎么办?

调整布局组件设置,或者把元素的锚点调整到对应位置。

4.如何让ui物体不受射线检测

添加CanvasGroup 组件,控制 blocksRaycasts 属性

或者代码控制

m_CanvasGroup.blocksRaycasts = false 

5.如何让物体上的贴图和某些特效贴图融合(背景贴图和弹痕贴图融合)

  1. 需要对导入到项目中的模型贴图,弹痕贴图进行属性设置。
    • ①勾选 Read/Write Enabled 属性;
    • ②Format 属性设置成 RGBA 32 bit。
  2. 将模型身上的 BoxCollider 组件移除掉,添加 MeshCollider 组件用于碰撞检测。(因为物理射线hit只能获取MeshCollider 上的点。

然后融合方只需要和它射线检测时,把射线对象传过去就可以。(m_BulletMark:素材贴图 m_MainTexture:主贴图)

注意:

  • 有时候需要设置下射线检测的层,避免获取的uv不正确
  • 同时要处理预制体bug(都使用同一张贴图的话,枪痕会一起生成,所以使用前要复制一份原有贴图,然后去改复制的那份)

详细代码见ExampleScripts下的UI_5文件夹。

6.Screen position out of view frustum (screen pos 0.000000, 0.000000, 2210299.750000) (Camera rect 0 0 256 256)

这个错误会在编译时一直显示,可能是版本错误,常见于3D场景切换到2D场景时。解决办法就是暂时关闭有问题的场景,调整完UI,切换3D再切换回来。

网络相关

1.如何看自己电脑的ip地址

查看本机 IP 地址

①Win + R 打开运行界面,输入 cmd,进入命令行模式;

②输入 ipconfig 命令,查看本机 ip 相关信息;

③找到“无线局域网适配器 WLAN:”,将该组信息内的“IPv4 地址”复制。

[鼠标光标框选住要复制的信息,然后按快捷键 Ctrl + C 即可复制]

组件方面

1.如何控制摄像机视野,实现模拟开镜?

FOV:Field of View,是 Camera 组件上的一个控制属性;

用于控制摄像机的视野,该属性默认值是 60。

改变 FOV 值的效果:

值越大看的区域越广,看到的物体会显得越远,越小;

值越小看的区域越窄,看到的物体会显得越近,越大。

常见用途:

枪械模拟开镜效果可以通过调整 FOV 属性来实现。

2.如何使用多相机,让一个相机观察主角,其他相机观察别的?

调整可观察的物体

首先,让角色摄像机只能观察到角色模型,通过 Camera 组件上的 Culling

Mask(剔除遮挡)属性来设置。该属性设置了摄像机能看到那些层的物体。

该属性的列表里的值是是 Layer 层的名称。

①添加一个新的层;

②把角色模型设置到该层;

③设置角色摄像机只看该层。

然后,创建一个环境摄像机,该摄像机作为角色摄像机的子物体存在。

调整相机观察优先级

<1>Camera 组件的 Depth 属性表示摄像机的深度,值越大,该摄像机的画面越靠前。所以说角色摄像机的 Depth 值要大于环境摄像机的 Depth。

<2>在前面渲染的角色摄像机的 Clear Flags 属性需要更改为 Depth Only。

<3>分别调整角色,环境摄像机的 FOV 值,你会发现它们只会影响自己看的的层的模型物体。

3.动作切换后下个动作比较慢怎么办?(射击的动作感觉比较缓慢,没有力度)

选中过渡线->右侧属性 Settings->Transition Duration(过渡时间)。

注意,上述属性属于控制动画是否平稳过渡,而Has Exit Time用于条件满足后控制是否立马切换。

4.游戏物体在场景视图显示,在游戏视图不显示,这是为什么?

查看物体是否在摄像机未遮罩的层(layer),可能你忘记设置它的layer了,它被设置在了无法被摄像机渲染的层上。

5.设置刚体的游戏物体,使用代码没法通过transform组件改变他的位置,怎么办?

添加了刚体的游戏物体,直接通过 Transform 修改位置,很多时候是无法修改的,这个时候可以先将刚体身上的 Is Kinematic 属性勾选,然后再修改位置。

最后将 Is Kinematic 属性还原。

Is Kinematic:勾选之后表示当前刚体不在受力的影响。

6.空物体放到枪械模型下方,模型运动,空物体并不会跟随动作改变位置,怎么办?

这个时候,应该放到对应的模型骨骼结构上。

7.装有刚体的物体速度太快,其他碰撞体检测不到,怎么办?

把 刚体组件的Collision Detection属性改为 Continuous Dynamic

Collision Detection(碰撞检测)

碰撞检测是物理引擎用来确定两个或多个对象是否相交的过程。在Unity中,刚体组件的碰撞检测属性可以设置为以下几种模式:

Discrete(离散)

  • 这是默认的碰撞检测模式。
  • 它适用于大多数情况,特别是当游戏对象的移动速度不是非常快时。
  • 在这种模式下,物理引擎会在每一帧结束时检测碰撞。

Continuous(连续)

  • 这种模式适用于快速移动的对象,如子弹或高速移动的车辆。
  • 它会尝试在每一帧中进行多次碰撞检测,以更精确地模拟碰撞。
  • 连续碰撞检测可以减少快速移动对象穿过其他对象的情况,但会增加计算量。

Continuous Dynamic(连续动态)

  • 这种模式是连续碰撞检测的变种,专为动态对象设计。
  • 它会为动态对象(即受力影响的对象)启用连续碰撞检测,而静态对象则使用离散碰撞检测。
  • 这种模式可以减少动态对象穿过静态对象的情况,同时保持较低的计算成本。

Continuous Speculative(连续投机性)

  • 这种模式是Unity 2018.3及以后版本中引入的。
  • 它使用一种投机性方法来预测和处理碰撞,可以更有效地处理快速移动的对象。
  • 这种模式旨在提供连续碰撞检测的性能优势,同时减少连续碰撞检测可能带来的问题。

8.使用射线检测碰撞在对应物体身上生成特效时,特效在某些角度显示不清楚怎么办?

使用hit.nolmal()(法线)作为生成特效的旋转角度。

9.没有报错,却没实现想要的功能

  1. 检查函数是否调用
  2. 脚本是否挂载
  3. 资源的路径是否写对,是不是没加载进来
  4. 逻辑错误

10.使用Resources反复存储读取json时,出现数据不同步的情况

使用Resources反复存储读取json时,会有缓存出现,引起的数据不同步情况,这时候用io读写就好了。

11.使用io读写resources里的文件,打包后找不到路径怎么办?

gpt的处理方式

在Unity中,使用 Resources 文件夹来存储数据(如JSON文件)确实可以方便地在开发过程中访问这些资源,但确实存在一些潜在的问题,包括数据不同步的情况。这是因为 Resources 文件夹中的资源在构建后会被Unity打包到最终的发布包中,而不会反映在 Resources 文件夹中的任何更改。

如果你在开发过程中修改了 Resources 文件夹中的JSON文件,这些更改不会自动反映到构建后的应用中。因此,如果你在开发过程中频繁修改这些数据文件,可能会导致数据不同步的问题。

为了解决这个问题,你可以采取以下几种策略:

  1. 使用 Resources.UnloadUnusedAssets
    在加载新的数据之前,调用 Resources.UnloadUnusedAssets 方法可以卸载不再使用的资源,包括之前加载的JSON数据。这样可以确保下次加载时,Unity会从 Resources 文件夹中读取最新的数据。

    Resources.UnloadUnusedAssets();
    
  2. 使用 Resources.Load 时指定资源的版本
    如果你担心数据不同步,可以在加载资源时指定资源的版本号或时间戳,这样可以确保加载的是最新的资源。

    TextAsset jsonData = Resources.Load<TextAsset>("jsonData/myDataFile", typeof(TextAsset));
    
  3. 将数据文件放在 StreamingAssets 文件夹
    将数据文件放在 StreamingAssets 文件夹中,然后在构建后通过 Application.streamingAssetsPath 访问这些文件。这样,你可以直接修改这些文件,并且在构建后这些更改会被包含在最终的发布包中。

    string filePath = Path.Combine(Application.streamingAssetsPath, "myDataFile.json");
    string jsonData = File.ReadAllText(filePath);
    
  4. 使用 AssetBundle
    如果你希望更灵活地管理资源,可以考虑使用 AssetBundleAssetBundle 允许你将资源打包成独立的包,然后在运行时动态加载这些包。这样,你可以随时更新 AssetBundle 而不影响主应用。

    AssetBundle myAssetBundle = AssetBundle.LoadFromFile("path/to/your/assetbundle");
    TextAsset jsonData = myAssetBundle.LoadAsset<TextAsset>("myDataFile");
    
  5. 使用数据库或文件系统
    对于需要频繁更新的数据,使用数据库或文件系统来存储数据可能是一个更好的选择。这样,你可以直接在运行时更新数据,而不需要重新构建应用。

选择哪种策略取决于你的具体需求和项目情况。如果你的数据更新频率不高,使用 Resources 文件夹可能足够。如果数据更新频繁,考虑使用 StreamingAssets 文件夹或 AssetBundle 可能更合适。对于需要频繁更新的数据,使用数据库或文件系统可能是最佳选择。

解决方法

我们采用第二种方法,把文件存储到 StreamingAssets文件夹里(可以读写)。

  1. 在 Assets下创建 StreamingAssets文件夹。
  2. 路径使用 Path.Combine(Application.streamingAssetsPath, fileName + ".txt");

问题解决。

DLC:关于 persistentDataPath(把数据存储到AppData文件夹下)

Application.persistentDataPath 是Unity提供的一个属性,它返回一个字符串,表示应用程序的持久化数据目录的路径。这个目录是应用程序用来存储用户数据、游戏进度等持久化信息的地方。在不同的平台上,这个目录的路径是不同的,例如:

  • 在iOS上,它通常位于 Documents 文件夹。
  • 在Android上,它可能位于 Android/data/你的应用包名/files 目录。
  • 在Windows上,它可能位于 C:\Users\用户名\AppData\LocalLow\你的应用包名 目录。

关于 Application.persistentDataPath 打包时是否会被Unity压缩,答案是:不会。Application.persistentDataPath 指向的目录是应用程序的持久化数据目录,这个目录是用于存储应用程序运行时生成的数据,如用户设置、游戏进度等。这些数据需要在应用程序运行时被访问和修改,因此Unity不会对这个目录进行压缩。

然而,Unity在构建应用程序时会对 Resources 文件夹中的资源进行压缩。Resources 文件夹中的资源在构建时会被Unity打包到最终的应用程序包中,以减少应用程序的大小。这些资源在运行时可以通过 Resources.Load 方法加载。

总结来说,Application.persistentDataPath 指向的目录是用于存储应用程序的持久化数据,这些数据不会被Unity压缩。而 Resources 文件夹中的资源在构建时会被Unity压缩,以减少应用程序的大小。

动画

1.空物体放到人物模型下方,模型运动,空物体并不会跟随动作改变位置,怎么办?

这个时候,应该放到对应的模型骨骼结构上。

2.使用布娃娃系统模拟死亡效果,效果太夸张,怎么办?

刚体上加点重量。

导航

1.在导航的过程中,使用transform.lookAt()转向不够平滑,怎么优化?

​ 把导航组件的 Angular Speed 属性(角速度)调到 360,就会平滑了。

2.导航物体默认会忽略物理系统,穿过碰撞体,怎么办?

给他加上 Nav Mesh Obstacle组件。

优化

1.当从重置场景跳转回游戏场景的时候场景变暗,怎么办?

把自动烘焙改为一般烘焙

当从重置场景跳转回游戏场景的时候,游戏场景内的灯光可能并没有渲染好,大部分区域是黑色的,我们需要在测试效果的时候,对游戏场景进行预先烘焙。

操作步骤:

①Window --> Lighting --> Settings 打开灯光烘焙面板;

②取消最下方的自动烘焙复选框,然后手动点击右侧的烘焙按钮。

Lua

1.Scite 配置字体大小

①Options–>Open Global Options File,打开全局配置文件;

②第 10 行代码,ont.base=font:xxxxxx,size:xx 修改成需要的字体字号。

注意事项:

要修改 SciTE 的配置文件时,在打开 SciTE 的时候需要右键–>以管理员身份运行,如果不是管理员身份运行,你修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1866235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Yolo v5实现细节(2)

Yolo v5代码实现细节 IOU系列损失 在之前的yolo v3中我们使用的定位损失主要使用的是差值平方的形式&#xff0c;通过预测边界框的参数和真实边界框的参数来进行计算求解的。 定位损失 L loc ( t , g ) ∑ i ∈ pos ( σ ( t x i ) − g ^ x i ) 2 ( σ ( t y i ) − g ^ …

高三学生的倒计时 给高考一个倒计时 让学习更有计划的进行

高三学生的压力是很大的&#xff0c;时间也是很紧迫&#xff0c;仅仅一年的时间&#xff0c;许多人都觉得不够用&#xff0c;为了让学子们更有时间紧迫感&#xff0c;更清晰的掌握时间&#xff0c;我们需要一个准确提醒的倒计时效果。 把这个倒计时放到班级电脑上&#xff0c;是…

DataGrip 2024 po for Mac 数据库管理工具解

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff08;适合自己的M芯片版或Intel芯片版&#xff09;&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功3、打开访达&#xff0c;点击【文…

LLMs 驱动的数据合成、整理和评估

1. AI 速读 总体概要 本文综述了大型语言模型&#xff08;LLMs&#xff09;在合成数据生成、筛选和评估方面的最新进展&#xff0c;旨在为学术和工业界提供深入、系统化的研究方向。文章强调了合成数据在解决真实世界数据局限性中的重要性&#xff0c;特别是在数据量和质量方…

汇聚荣做拼多多运营,是新手怎么做?

作为电商领域的一颗新星&#xff0c;拼多多以其独特的商业模式迅速崛起&#xff0c;吸引了众多商家和消费者的目光。对于新手来说&#xff0c;如何在拼多多平台上开展运营活动&#xff0c;成为了许多初入电商领域的人们关心的问题。本文将围绕如何做好拼多多运营这一核心内容&a…

类与对象(1)

1.c升级了类 C 语言结构体中只能定义变量&#xff0c;在 C 中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。 比如&#xff1a; 之前在数据结构初阶中&#xff0c;用 C 语言方式实现的栈&#xff0c;结构体中只能定义变量 &#xff1b;现在以 C 方式实现&…

期货交易记录20240626

文章目录 期货交易系统构建第一步、选品第二步、心态历练第三步、开仓纪律第四步、持仓纪律第五步、接下来的计划 2024年6月26号&#xff0c;开始写期货交易的第四篇日记。 交易记录&#xff1a;做了一笔纯碱的多单&#xff0c;在回撤了400个点左右后&#xff0c;看到企稳信号后…

升级外贸ERP保留历史数据,拥抱技术革新赢得未来

一些做了二十多年外贸的老公司&#xff0c;早期就通过使用ERP软件来进行订单的处理&#xff0c;但是随着互联网的发展&#xff0c;用的年岁久了&#xff0c;软件运行速度也变卡了&#xff0c;看到别人家的新功能也眼馋&#xff0c;但是就是不敢升级&#xff0c;担心一升级&…

数据采集Selenium中的弹窗处理

在爬虫技术中&#xff0c;弹窗处理是一个常见但具有挑战性的问题。Selenium作为一个强大的网页自动化工具&#xff0c;可以帮助我们有效地处理网页中的各种弹窗。本文将概述如何使用Selenium处理弹窗&#xff0c;并提供实现代码&#xff0c;代码中将使用代理IP技术。 概述 弹…

前端项目vue3/React使用pako库解压缩后端返回gzip数据

pako仓库地址&#xff1a;https://github.com/nodeca/pako 文档地址&#xff1a;pako 2.1.0 API documentation 外部接口返回一个直播消息或者图片数据是经过zip压缩的&#xff0c;前端需要把这个数据解压缩之后才可以使用&#xff0c;这样可以大大降低网络数据传输的内容&…

茴香豆接入微信个人助手部署

将rag产品接入微信工作群&#xff0c;自动回答问题&#xff0c;香吗&#xff1f;&#xff1f; let‘s go 1、打开openxlab平台&#xff0c;找到茴香豆web产品应用中心-OpenXLab 点击进入&#xff0c;设置知识库名字和密码 2、上传知识库文件和编辑正反例等 3、然后进行测试问答…

Gitlab合并代码并解决冲突演示

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

南信大尹志聪教授为一作在顶级综合性期刊《Natl. Sci. Rev.》发文:传统梅雨停摆,江南缘何不再多烟雨?

文章简介 论文名称&#xff1a;Traditional Meiyu–Baiu has been suspended by global warming 第一作者及单位&#xff1a;尹志聪(教授|南京信息工程大学大气科学学院) 通讯作者及单位&#xff1a;王会军&#xff08;院士|南京信息工程大学大气科学学院&#xff09; 文章发…

尚品汇-(七)

&#xff08;1&#xff09;在网关中实现跨域 全局配置类实现 包名&#xff1a;com.atguigu.gmall.gateway.config 创建CorsConfig类 Configuration public class CorsConfig {Beanpublic CorsWebFilter corsWebFilter(){// cors跨域配置对象CorsConfiguration configuration…

使用单调队列求滑动窗口最大值

单调队列&#xff1a;队列元素之间的关系具有单调性&#xff08;从队首到队尾单调递增/递减&#xff09;&#xff0c;队首与队尾进行插入与删除操作&#xff0c;使队列保持单调递增/递减&#xff0c;由双端队列deque实现。 通过例题对单调队列进行分析掌握&#xff1a; 使用单…

【UE5.3】笔记4-自定义材质蓝图

正常来说&#xff0c;我们都是拿到什么材质用什么材质&#xff0c;那么我们如何去创建自定义的材质呢&#xff1f; 首先&#xff0c;创建MyMaterials文件夹用来存放我们自制的材质&#xff1b; 然后&#xff0c;右键创建一个材质&#xff0c;起个名字&#xff0c;双击打开&am…

操作符详解(上) (C语言)

操作符详解&#xff08;上&#xff09; 一. 进制转换1. 二进制2. 二进制的转换 二. 原码 补码 反码三. 操作符的分类四. 结构成员访问操作符1. 结构体的声明2. 结构体成员访问操作符 一. 进制转换 1. 二进制 在学习操作符之前&#xff0c;我们先了解一些2进制、8进制、10进制…

SK Hynix 3D DRAM良率突破56.1%,开启存储新时代

根据韩国财经媒体Business Korea独家报道&#xff1a;在刚刚结束的VLSI 2024国际研讨会上&#xff0c;韩国半导体巨头SK Hynix公布了一项振奋人心的进展&#xff1a;其五层堆叠3D DRAM的制造良率已达到56.1%。此成果标志着3D DRAM技术在商业化道路上迈出了坚实的一步&#xff0…

Python+Pytest+Yaml+Request+Allure+GitLab+Jenkins接口自动化测试框架概解

PythonPytestYamlAllure整体框架目录&#xff08;源代码请等下篇&#xff09; 框架详解 common:公共方法包 –get_path.py:获取文件路径方法 –logger_util.py:输出日志方法 –parameters_until.py&#xff1a;传参方式方法封装 –requests_util.py&#xff1a;请求方式方法封…

从零开始学docker(四)-安装mysql及主从配置(一)

mysql MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关…