当前位置: 首页 > wzjs >正文

服务网站建设企业济南seo网络优化公司

服务网站建设企业,济南seo网络优化公司,内容营销策略有哪些,wordpress 页面列表显示Unity学习日志4 1.Shift ctrl F将目前选中的物体移动到目前位置。2.将某个物体移动至鼠标位置3.Animation Transform相关选项4.怎样减少Unity的GC①减少对象的创建②优化字符串操作③ 及时释放不再使用的资源④ 优化数据结构 5.Unity的拆装箱机制先导知识:拆装箱&…

Unity学习日志4

      • 1.Shift + ctrl + F将目前选中的物体移动到目前位置。
      • 2.将某个物体移动至鼠标位置
      • 3.Animation Transform相关选项
      • 4.怎样减少Unity的GC
        • ①减少对象的创建
        • ②优化字符串操作
        • ③ 及时释放不再使用的资源
        • ④ 优化数据结构
      • 5.Unity的拆装箱机制
        • 先导知识:
        • 拆装箱:

1.Shift + ctrl + F将目前选中的物体移动到目前位置。

2.将某个物体移动至鼠标位置

 private void GetMousePoint(){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);Physics.Raycast(ray, out RaycastHit hit);if(Input.GetMouseButtonDown(0)) unit.Instance.tragetPosition = hit.point;transform.position = hit.point;//Debug.Log(Physics.Raycast(ray, out RaycastHit hit));}

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);用于把鼠标位置转化为一个射线。
Physics.Raycast(ray, out RaycastHit hit);射线检测,out保证有Raycast返回值hit。
if(Input.GetMouseButtonDown(0)) unit.Instance.tragetPosition = hit.point;
如果点击鼠标左键那么移动木标点到鼠标位置。
transform.position = hit.point;指针位置更新

3.Animation Transform相关选项

在这里插入图片描述

4.怎样减少Unity的GC

	1、C#变量分为两种类型:值类型和引用类型,值类型分配在栈区,引用类型分配在堆区 GC关注引用类型

2、GC卡顿原因:堆内存垃圾回收,向系统申请新的堆内存

3、GC触发条件:堆内存分配而当内存不足时、按频率自动触发、手动强行触发(一般用在场景切换)

4、GC负面效果:内存碎片(导致内存变大,GC触发更加频繁)、游戏顿卡

5、GC优化方向:减少GC次数、降低单次GC运行时间、场景切换时主动GC

6、GC优化策略:减少对内存分配次数和引用次数、降低堆内存分配和回收频率
  
  7、结构体数组:如果结构体中含有引用类型变量,对结构体数组进行拆分,避免GC时遍历所有结构体成员

原文链接:https://blog.csdn.net/Songxianzhang/article/details/141027315

①减少对象的创建

使用对象池:对于频繁创建和销毁的对象,如子弹、敌人等,可以使用对象池来管理。对象池的基本原理是预先创建一定数量的对象,当需要使用对象时,从对象池中取出;当对象使用完毕后,将其放回对象池中,而不是销毁。这样可以避免频繁的对象创建和销毁,减少 GC 的压力。避免在循环中创建对象:在循环中创建对象会导致大量的临时对象被创建,增加 GC 的压力。可以将对象的创建移到循环外部,或者使用对象池来管理这些对象。

②优化字符串操作

避免频繁的字符串拼接:在 C# 中,字符串是不可变的,每次进行字符串拼接操作都会创建一个新的字符串对象。可以使用StringBuilder来代替字符串拼接操作,减少临时对象的创建。

using System.Text;
using UnityEngine;public class StringBuilderExample : MonoBehaviour
{private void Start(){StringBuilder sb = new StringBuilder();for (int i = 0; i < 10; i++){sb.Append(i.ToString());}string result = sb.ToString();Debug.Log(result);}
}
③ 及时释放不再使用的资源

手动销毁不再使用的对象:当某个对象不再使用时,及时调用Destroy方法将其销毁,以便释放内存。
释放非托管资源:对于一些非托管资源,如纹理、音频等,需要手动调用相应的释放方法来释放资源。例如,使用Resources.UnloadUnusedAssets方法来释放未使用的资源。
非托管资源: 不能被GC自动回收的对象,需手动回收。

④ 优化数据结构

选择合适的数据结构:不同的数据结构在内存使用和性能方面有不同的表现。根据实际需求选择合适的数据结构,避免使用过于复杂或占用内存过多的数据结构。
减少数据结构的频繁扩容:对于一些动态数组,如List,在添加元素时可能会发生扩容操作,导致内存重新分配和临时对象的创建。可以预先分配足够的容量,减少扩容的次数。

5.Unity的拆装箱机制

先导知识:

①引用类型与引用类型之间赋值操作
当把一个引用类型的变量赋值给另一个引用类型的变量时,实际上传递的是对象的引用(内存地址),而非对象本身。这意味着两个变量会指向堆内存中的同一个对象。因此,对其中一个变量所引用对象的属性进行修改,会反映到另一个变量上。
②值类型与值类型之间赋值操作
值类型变量赋值时,会把变量的值复制一份给新的变量。两个变量在内存中是相互独立的,对其中一个变量进行修改,不会影响到另一个变量。
因此值类型赋值的时候如果数据量较大可能会影响到程序的性能,然而引用类型的时间复杂度低一般不会有性能的问题。

拆装箱:

拆装箱指的是:
:把引用类型转换回值类型,在进行拆箱操作时,首先会检查引用类型所指向的对象是否是目标值类型的装箱实例,如果是,则将堆上存储的值复制到栈上的目标值类型变量中。
首先会检查引用类型所指向的对象是否是目标值类型的装箱实例
意思是在拆箱的时候会先检查引用类型装的变量是否为要赋值给的值类型是的话转化并赋值,否则抛出异常。
:将值类型转换为引用类型,当进行装箱操作时,会在堆上分配一块内存,将值类型的数据复制到这块内存中,然后返回一个指向该内存地址的引用。

由于装箱会涉及到内存分配和赋值所以性能开销及大。拆箱过程也需要涉及到赋值。
因此使用泛型集合可以很好的避免拆装箱,因为在集合定义之初已经定义变量类型了。

http://www.dtcms.com/wzjs/133941.html

相关文章:

  • 微名片网站怎么做上海市人大常委会
  • 中原区快速建站公司电话搜索关键词软件
  • 广东外贸网站推广公司seo 网站推广
  • 南京做网站优化公司网站优化排名软件网
  • 可信网站验证服务上海推广网站
  • WordPress网站仿制培训课程总结
  • 做网站和域名北京网络营销推广
  • 小学生网上学做辅导哪个网站好查询关键词
  • 济南网站建设泰观网络企业营销策划及推广
  • 网站基础内容磁力搜索引擎
  • 如何选择邯郸网站建设一媒体app软件下载老版本
  • reactjs 做网站宝鸡seo培训
  • 山东泰安人才网惠州seo优化服务
  • 求个网站2022免费收录网站提交
  • 网站升级改版需要多久推广软件赚钱的平台
  • 国外做蒸汽锅炉的网站怎么优化网络
  • 电子商务网站建设期末考试怎么做百度搜索排名
  • 网站建设wang1314竞价广告是怎么推广的
  • 在京东上怎样做网站友情链接交易网
  • 丽水网站建设公司宣城网站seo
  • 做信息类网站百度站长工具如何使用
  • 网站开发 英语怎么制作一个网页
  • 网站建设设计书seo推广培训中心
  • 网龙网络公司地址引擎优化是什么意思
  • 网页设计框架代码示例网店seo排名优化
  • 定制企业网站优化网站搜索
  • 大什么的网站建设公司好厦门seo排名优化方式
  • 阿里云如何查看已建设好的网站营销文案
  • 昌平区住房和城乡建设委员会网站干净无广告的搜索引擎
  • 做网站听的纯音乐成都网站设计