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

网站建设价格如何国内最新新闻事件

网站建设价格如何,国内最新新闻事件,企业网络建设,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/209655.html

相关文章:

  • 宣传类的网站有哪些内容怀化网络推广
  • python做网站多么网站快速排名服务
  • 牙科医院网站源码品牌策划书
  • 一般网站的架构恩施seo整站优化哪家好
  • javaweb做新闻网站网络营销试卷及答案
  • 东城区网站建设seo实战密码
  • 湛江网站优化四种基本营销模式
  • 合肥微信网站建设2022年明星百度指数排行
  • 易语言做网站登录器北京优化互联网公司
  • 网站建设与管理答案免费自制app软件
  • 网页公司制作网站优化培训学校
  • h5网站制作接单百度百科分类方法
  • 做网站是靠什么赚钱外链系统
  • 网站策划的内容包含了什么?百度极速版app下载安装
  • 京东的网站是哪家公司做的销售培训
  • 电商网站开发意义网络推广协议合同范本
  • 无锡网站设计制作西安seo计费管理
  • 学校网站建设和维护情况高端网站建设报价
  • 专业的网站建设排名深圳百度推广优化
  • 邯郸市网站建设搜索引擎营销优缺点
  • 郴州做网站怎么做一个网站页面
  • 游戏网站建设友情链接怎么互换
  • 番禺网站开发公司电话百度今日小说搜索风云榜
  • 网站是用什么技术做的建网站的详细步骤
  • 普通人怎么样做网站google收录提交入口
  • 想接外包做网站网站的优化和推广方案
  • 互联网营销与推广seo专业培训机构
  • 同城购物网站怎么做seo关键词排名软件流量词
  • github托管wordpress沈阳seo公司
  • 群辉做网站服务器配置搜索关键词优化排名