Unity - A计划(一年有效期) 扫二维码继续学习 二维码时效为半小时

(61评价)
价格: 2170.00元

衣服和皮肤建议不要混在一起,分开做好点

[展开全文]
Milk · 2018-06-12 · 0

[RequireComponent(typeof(ObjectPool))]

自动添加脚本,在脚本的头部加上该特性,那么给物体挂载该脚本的时候,也会加上ObjectPool脚本!!!必须要是在挂载的时候才会出现,Unity不会对旧的脚本,也就是没加该特性的脚本进行更新,必须remove后再加上去才会生效。

[展开全文]
Milk · 2018-06-08 · 0

由于uLua的使用习惯,我lua文档不习惯以txt结尾

        mLuaEnv = new LuaEnv();
        mLuaEnv.AddLoader((ref string filePath) => {
            string script = string.Empty;
            using (StreamReader sr = new StreamReader(Application.dataPath + "/Scenes/002-RunLuaFile/MyLua/" + filePath + ".lua"))
            {
                script = sr.ReadToEnd();
                sr.Dispose();
            }
            return System.Text.Encoding.UTF8.GetBytes(script);
        });
        mLuaEnv.DoString("require 'LuaHelloWorld'");//loader

[展开全文]
cyzeus · 2018-05-21 · 0

自定义Loader没看出有啥用。。。看下一节吧

[展开全文]
cyzeus · 2018-05-21 · 0

不能使用Resources的话可以选择使用文件流

    private LuaEnv mLuaEnv;
    void Start () {
        mLuaEnv = new LuaEnv();
        using (StreamReader sr = new StreamReader(Application.dataPath + "/Scenes/002-RunLuaFile/LuaHelloWorld.lua"))
        {
            string script = sr.ReadToEnd();
            mLuaEnv.DoString(script);
            sr.Dispose();
        }
    }
    void OnDistroy()
    {
        mLuaEnv.Dispose();
    }

[展开全文]
cyzeus · 2018-05-21 · 0
#region PRIVATE_METHODS

    protected virtual void OnTrackingFound()
    {
        isShow = true;
        cubeTrans.SetParent(transform);
        cubeTrans.position = Vector3.zero;

    }


    protected virtual void OnTrackingLost()
    {
        if (isShow) {

            cubeTrans.SetParent(targetTrans);
            cubeTrans.position = Vector3.zero;
            isShow = false;
        }
    }

    #endregion // PRIVATE_METHODS

效果更好

[展开全文]
浪迹天涯义 · 2018-05-14 · 0

1.需要挂载脚本

2.需要激活ExtendTracking

[展开全文]
浪迹天涯义 · 2018-05-14 · 0
  • 当代码中的全局变量值与Inspector中的不同时,以后者为准
[展开全文]
gentlemanlance · 2018-05-12 · 1

感觉这个笔记写的很好,

[展开全文]
学Unity吧 · 2018-05-11 · 1

将已不会改动的代码脚本放在Plugins文件下,这样编译速度会加快,因为Unity编译C#脚本是要遍历所有C#脚本的,而唯独Plugins下的C#脚本它不管,所以可以加快编译速度。

[展开全文]
Milk · 2018-04-23 · 0

资源池:减少实例化次数,只在第一次使用的时候实例化,当这个预制体消失的时候是保存在资源池中,就是隐藏了它,再当你需要这个预制体的时候,检查资源池是否有这个预制体,如果有,拿出来显示就OK了,不需要实例化,从而优化性能。

[展开全文]
Milk · 2018-04-23 · 0

一个材质使用一个贴图,这样如果有很多贴图的话,那么就会有很多材质,那就意味着有很多Shader,CPU需要准备时间就越多,所以我们最好把贴图弄成图集,让材质都共用一个贴图,类似于我的世界那样。

阴影和光照分辨率、折射等都要渲染很多次,把这些特效取消掉可以优化性能。

合并网格要是同一个材质的物品网格才会优化,如果合并网格的物品材质不一样,那么合并之后材质数量还是一样那么多,并没有优化,材质一样即贴图一样,但是材质的选择贴图区域 可以不一样,这样可以用一个图集来作为贴图,让材质选择图集中不同区域的贴图,使得材质效果不一样,但是材质是一样的,因为这个材质用的是同一张图集(贴图)。

[展开全文]
Milk · 2018-04-23 · 0

  //创建一个空物体,最好Reset一下放在世界(0,0,0),空物体要带有MeshFilter组件(用于确定形状)和MeshRenderer组件(用于渲染)
        //下面是合并Mesh的代码
        //1.获取空物体下所有子物体的MeshFilter组件(这个组件用于控制物品的形状)Mesh是网格
        MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
        //2.创建合并实例体数组
        CombineInstance[] combineInstances=new CombineInstance[meshFilters.Length];
        //将合并实例体的网格和位置设置成子物体MeshFilter一样的
        for (int i=0;i<meshFilters.Length;i++)
        {
            combineInstances[i].mesh = meshFilters[i].sharedMesh;//这个sharedMesh是场景实例的Mesh,还有一个是Mesh是克隆Mesh
            combineInstances[i].transform = meshFilters[i].transform.localToWorldMatrix;//将子物体坐标转化为世界坐标系坐标
        }
        //创建一个网格
        Mesh myMesh = new Mesh();
        //将合并实例体们合并起来形成一个整体Mesh
        myMesh.CombineMeshes(combineInstances);
        //赋值给空物体,让空物体显示出整体
        GetComponent<MeshFilter>().sharedMesh = myMesh;
        //还要记得将MeshRenderer组件中的Material赋值好,不然显示的是粉红色

        //对比性能:优化了40%

[展开全文]
Milk · 2018-04-22 · 0

Lightmapping光照贴图

把灯光的实时渲染(计算),变成一个贴图一样贴在物体身上,模拟灯光效果。

方法:选择场景中(除了灯以及不需要灯光的物体)的所有物体,选择Lightmap Static,然后打开window-lighting-settings-Scene选项下的Debug Settings的Generate Lighting进行烘焙.

烘焙前需要将灯光Light的Mode改成Baked烘焙模式,才可以烘焙!

烘焙完之后,将灯光隐藏,若不做这一步的话,灯光烘焙的意义就没有了,灯光依然在占用着CPU

[展开全文]
Milk · 2018-04-22 · 0

GPU 显卡 渲染 场景、特效等等

CPU 处理数值运算(+-*/)、随机数、AI

[展开全文]
Milk · 2018-04-22 · 0

资源优化在插入新包的时候检查是否有重复资源,第二种是在发布前检查,使用第三方软件进行分析资源

[展开全文]
Milk · 2018-04-22 · 0

Resources文件夹的东西会被打包

Unity发布的时候会把使用的资源打包,而没用的资源不会被打包出去

不同目录下的相同资源文件,如果被引用了都会被打包,造成冗余,所以保证同一个资源文件在项目中只存放在同一个目录位置

[展开全文]
Milk · 2018-04-22 · 0

DrawCalls 越大性能越差,CPU要做DrawCalls次准备工作,再调用图形库的接口,导致GPU闲置,造成卡的现象。

长时间音乐.mp3压缩格式(背景音乐)减少空间占用,增加加载时间,但是调用次数少门。

短时间音乐.wav非压缩格式(攻击、特效音乐)加载快因为不用解压,频繁被调用的话,可节省时间

在把音乐文件导入Unity后Decompress on Load文件导入模式是在加载后解压,专用于小文件。

Compressed in Memory适用于大文件

Streaming不适合手游开发的导入文件模式

贴图长宽少于1024

[展开全文]
Milk · 2018-04-22 · 0

Unity Statictics统计面板

Game面板 - 右上角Status

FPS:每秒渲染的画面帧数,越大越好,一般是30以上正常,30以下会觉得卡。

CPU:计算每一帧所需时间,越小越好

render thread:渲染线程时间,越小越好

Batches:DrawCall的分批处理次数 如果Batches小于DrawCall,则表示Unity自身对DrawCall进行了分批处理,优化了性能.

当一个物品虽然是同样的,但是分静态渲染和动态渲染,如果物体为静态的,则是静态渲染,会增加DrawCall。

Averts:顶点个数,是在摄像机范围内的顶点个数,天空格子所占用的顶点数是5K

Tris:三角面个数,同样也是摄像机范围内的三角面个数

SetPass Calls:与Shader渲染有关,当有一次Pass时SetPass Calls会增加

[展开全文]
Milk · 2018-04-22 · 0

UnityProfiler性能分析器

UnityManual搜索Profilier overview可查看各种Profiler的介绍

[展开全文]
Milk · 2018-04-22 · 0