零散知识点

UI图集,应该是正方形的,不应该是长方形的, 这样更容易优化,如:512*512   1024*1024... (2的幂次方)

正方形图集在NGUI中创建图集时 需要把Unity Packer 取消选中 把Force Square选中

资源管理:

创建一个单例的泛型类 约束 T:new() 为一个新的实例,再创建一个加载资源的类继承之后就有了单例模式,方便创建单例模式,每次加载资源调用里边的方法去加载, 这个方法中带有将加载过的资源缓存到一个键值对中(字符串路径,GameObject).如果不是第一次加载(存在键,那么就从缓存中返回GameObject) 否则从Resources中加载;

内存释放, 

将泛型单例模式继承接口IDisposable 并实现为一个虚方法, 让继承自这个单例类的方法去实现这个方法,在方法中将缓存表清空, 在切换场景时调用这个方法,对内存进行优化 

Resources.UnloadUnuseAssets(); 这个方法可以释放没有使用的资源

Android平台

设置图片Format为ETC 4bits

NGUI中对 UIRoot中的Scaling Style 设置为 Constrained On Mobiles (移动平台)

在异步切换场景时可以使用Application.LoadLevelAsync();

可以使用返回的对象.allowSceneActivation 设置这个变量为false 就不会切换场景, 当加载完成了再将这个值设置为True.  可以处理 场景比较小的时候进度条没走完瞬间切换.过于太快

处理NGUI 点击UI时3D世界受影响问题

NGUI中按钮注册的方式

private void Start()
    {


        //EventDelegate ed1 = new EventDelegate(OnBtnClick);
        //GameObject.Find("LoginButton").GetComponent<UIButton>().onClick.Add(ed1); //一种方式


        UIButton[] buttonArr = GetComponentsInChildren<UIButton>(true);//另一种方式,委托中定义了最少需要一个GameObject 的参数  还有就是拖拽面板注册方法
        foreach (UIButton item in buttonArr) 
        {
            UIEventListener.Get(item.gameObject).onClick = OnBtnClick;
        }

    }

    private void OnBtnClick(GameObject go)
    {
        print(go.name);
    }

 在一个基类中如果有一个单例, 如果再有多个子类继承, 那么其他类中是无法访问到这个基类或者从这个基类的派生类中所属的字段的.

解决办法: 这个基类不要作为一个单例,将里边其他类中要访问的字段做为普通字段,访问的时候通过使用派生类的实例去访问.

NGUI名称跟随3D角色

伤害上弹可以使用HUDText插件.

本博客所有内容均为原创,转载请注明出处.
原文地址:https://www.cnblogs.com/what-lee/p/9337318.html