专栏首页Unity TechnologyJtro的优化技术分享(不定时更新)

Jtro的优化技术分享(不定时更新)

游戏大量删除物体时的优化

比如有割草游戏,当玩家在场景中怪物最多的地方释放一个AOE技能,范围内的怪物全部死掉,这时候就需要把这些怪物删除 如果玩家不听的在施放技能,而怪物刷新又比较快的情况下,大约会有2种办法 第一种是写对象池,

第二种是直接销毁怪物 如果真的采用这种 加入频繁的销毁怪物的话,势必造成手机的计算压力,所以我们可以尝试不在技能施放完毕后立即销毁,而是分为几个阶段销毁,打个比方,如果玩家一个技能造成了20个怪物的死亡,而我们则不需要在玩家玩家释放完技能的这一帧中销毁怪物.而是可以尝试在第一帧中销毁1-3个,第二帧销毁1-3个一直到销毁完毕. 代码示意如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class jxyh : MonoBehaviour
{
    public List<GameObject> list;
    // Start is called before the first frame update
    void Start()
    {
        list = new List<GameObject>();
        for (int i = 0; i < 20; i++)
        {
           GameObject obj= GameObject.CreatePrimitive(PrimitiveType.Cube);
            obj.transform.position = new Vector3(i+0.5f, 0, i+0.5f);
            list.Add(obj);
        }
        StartCoroutine(DestoryEnermy(list));
    }

    IEnumerator DestoryEnermy(List<GameObject> ts)
    {
        int listLenth = ts.Count;
        Debug.Log(listLenth);
        while (ts .Count !=0)
        {
            yield return new WaitForFixedUpdate(); 
            Destroy( ts[listLenth-1]);
            list.RemoveAt(listLenth-1);
            listLenth--;
        }
    }
}

频繁的更改字符串的优化

如果是需要频繁的修改string类型的字符串,那么对于这样的需求,我们在测试的时候发现,频繁修改string类型的字符串会消耗大量的资源,因为程序在一直执行着装箱和拆箱操作.如果换成stringBuild类型,那么将会大大减少性能消耗

StringBuilder sb =new  StringBuilder("字符");

StringBuilder是可变长度的,其首先在内存中分配固定的长度,当进行频繁的插入和连接操作时,超出了内存中分配的长度会自动进行扩充,从而有效的节约了内存空间和减少了生成对象的时间。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Unity中的一些优化建议

    在Unity中,相比漫无目的地调整代码,选择正确的脚本优化更能提高代码的执行效率。但值得注意的是,最好的优化并不是简单地降低代码的复杂度。各个平台通用的优化方案...

    LittleU
  • 教程|Unity中使用Tilemap快速创建2D游戏世界

    本篇文章是Unity的技术团队给大家做的关于在Unity中如何使用Tilemap快速创建2D游戏世界,一起来看看吧。

    LittleU
  • 数据结构与算法(二)

    上篇文章介绍了两种数据结构,数组与集合,集合与数组特性基本相同,不同的是集合中的元素是不能相同的.所以在执行插入的时候,集合比数组多了一步"查重"的操作,这是一...

    LittleU
  • 学界 | SWATS:自动由Adam切换为SGD而实现更好的泛化性能

    机器之心
  • 「架构框架」ArchiMate视图指南(5):技术视图和技术使用视图

    ArchiMate基本视图包括ArchiMate元素和ArchiMate三个主要层的概念:业务、应用程序和技术。下面列出的是ArchiMate 3.1示例视点表...

    首席架构师智库
  • brew 安装配置

    访问官网复制脚本安装 https://brew.sh/index_zh-cn.html 常用命令 诊断 $ brew doctor 清理 删除旧包、不再需要的包...

    康怀帅
  • 基于repmgr的postgresql主备高可用方案

    本文比较基础,主要介绍postgresql开源高可用工具repmgr的部署和使用,初学者可以根据本文步骤一步一步做下去,废话不多说,直接进入主题,本文以两台机器...

    数据库架构之美
  • NGS测序中PCR重复序列的判定方法

    在NGS的数据分析中,去除PCR重复序列是一个常见的分析步骤,无论是WES/WGS的snp calling,还是chip_seq, ATAC_seq,都需要对原...

    生信修炼手册
  • 链队 原

    队列用链表来表示时,需要用两个变量来记录队列两端的变化:theFront,theBack.

    青木
  • 【深度学习】多通道图像卷积过程及计算方式

    之前,有写了一篇博文,【深度学习入门】——亲手实现图像卷积操作介绍卷积的相应知识,但那篇文章更多的是以滤波器的角度去讲解卷积。但实际上是神经网络中该博文内容并不...

    Frank909

扫码关注云+社区

领取腾讯云代金券