码迷,mamicode.com
首页 > 其他好文 > 详细

切水果项目总结

时间:2014-12-29 21:23:14      阅读:709      评论:0      收藏:0      [点我收藏+]

标签:

2/3D游戏:2D

辅助插件:NGUI

游戏制作难度系数:初级

用到的其他工具:Trail Renderer(拖尾组件)

1、NGUI使背景图片适应任何分辨率

    void Start()
    {
        UIRoot root = GameObject.FindObjectOfType<UIRoot>();
        if (root != null)
        {
            float s = (float)root.activeHeight / Screen.height;
            int height = Mathf.CeilToInt(Screen.height * s);
            int width = Mathf.CeilToInt(Screen.width * s);
            UISprite sprite = this.gameObject.GetComponent<UISprite>();//背景图片
            sprite.height = height;
            sprite.width = width;
        }
    }

2、NGUI批量处理按钮事件

    void Start()
    {
        UIButton[] buttons = this.gameObject.GetComponentsInChildren<UIButton>();//获取场景中所有按钮
        if (buttons != null && buttons.Length > 0)
        {
            foreach (var item in buttons)
            {
                UIEventListener.Get(item.gameObject).onClick += ButtonClick;//为每个按钮赋予同一个点击事件
            }
        }
    }
    void ButtonClick(GameObject obj)
    {
        switch (obj.name)
        {
            case "play"://开始游戏
                this.gameObject.SetActive(false);
                GameObject panel = Resources.Load("mainpanel") as GameObject;//mainpanel游戏主界面已存储为一个预设
                NGUITools.AddChild(Camera.main.gameObject, panel);//把此预设加载到maincamera下面
                break;
            case "moregame"://更多游戏
                Application.OpenURL("http://www.cnblogs.com/mrzivchu");
                break;
            case "credits"://创建者信息
                Application.OpenURL("http://www.cnblogs.com/mrzivchu");
                break;
            default:
                break;
        }
    }

3、解决粒子特效被NGUI遮挡的问题

修改Camera下的Culling Mask为Everything(默认为Unnamed 8)(这个必须要设置成这样)

修改NGUI中的UIPanel脚本中的默认的RenderQueue是3000, 调整到3000以下,这样就不会遮挡粒子特效了,一般例子效果的RenderQueue也是3000,可以从下面的步骤看出粒子效果的RenderQueue值(渲染队列):技术分享,fire1是粒子特效,依次点击fire1下面的outercore,innercore,smoke,在后缀为Render的组件里,点击edit…,技术分享技术分享

就可以看出RenderQueue的值了!当有的UIPanel需要显示在特效上面时,在Hirerarchy面板中把该UIPanel的Renderer Q选项调整为Start At,值为3000以上,就可以解决!

修改粒子特效的Shader中的RendererQueue值的通用代码:

    public UIPanel panel;
    public enum rendertype
    {
        front,
        back
    }
    public rendertype type = rendertype.front;
    void Start()
    {
        int num = panel.startingRenderQueue;
        num += (type == rendertype.front) ? 1 : -1;
        Renderer[] sys = GetComponentsInChildren<Renderer>();//如果自己也有Render也会算在内
        foreach (Renderer item in sys)
        {
            item.material.renderQueue = num;
        }
    }

另外:

上面解决的是NGUI关于粒子遮挡的问题,如果是使用Unity自身的Particle System粒子系统,技术分享,那么解决例子系统的办法是:对粒子系统进行 如下操作:

   void Start()
    {
        particleSystem.renderer.sortingLayerName = "Default";
        particleSystem.renderer.sortingOrder = 2;
    }

为粒子系统指定好一个层,并指定粒子系统在此层的前后排序位置,sortingOrder越大,那么在Default层中排的位置越靠前

切水果项目总结

标签:

原文地址:http://www.cnblogs.com/MrZivChu/p/cutfriuts.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!