unity开发之一:打包(使用细节)

unity开发完成之后,在打包的时候还会遇到各种稀奇古怪的问题,决定以后这篇博客就专门用来记录打包的bug!
首先还是梳理一下打包流程:
1.首先打包之前,我们会调整一下质量参数之类的,在edit-projectsetting-Quality里面,会有这个类,具体的界面如下图:
unity开发之一:打包(使用细节)_第1张图片
里面一些参数的含义我就不一一解释了
主要是质量参数,抗锯齿,还有阴影的设置
2.然后我们bliudsetting之后会弹出如下图界面unity开发之一:打包(使用细节)_第2张图片
我们首先是选择平台,然后点击switchPlaform切换平台,切换平台之后我们点击PlayerSetting,如下界面:
unity开发之一:打包(使用细节)_第3张图片
这个界面我们必须填公司名,项目名称,然后是图标
unity开发之一:打包(使用细节)_第4张图片
这儿主要是不播放unity自带的动画和不用他的logo,有很多公司不希望用户知道自己的项目是什么软件做的。
然后othersetting里面包名也得设置一下,这里面的很多设置以后都需要,会产生各种的bug
以上的设置完成之后add场景,然后点击bliud,打包就行了,当然ios的还需要在mac电脑上面再打包一次,比较麻烦,exe和安卓的不需要,但是安卓的需要先布置环境,打包出来了就能直接装上使用了!
打包过程的bug:
1.shader的报错:当我的unity升级版本之后,我的shader在打包ipad的时候会报错误,代码错误段是:

        UnityGIInput d;
        d.light = light;
        d.worldPos = i.posWorld.xyz;
        d.worldViewDir = viewDirection;
        d.atten = attenuation;
        #if defined(LIGHTMAP_ON) || defined(DYNAMICLIGHTMAP_ON)
            d.ambient = 0;
            d.lightmapUV = i.ambientOrLightmapUV;
        #else
            d.ambient = i.ambientOrLightmapUV;
        #endif

        -------------------
                  d.boxMax[0] = unity_SpecCube0_BoxMax;
        d.boxMin[0] = unity_SpecCube0_BoxMin;
          d.probePosition[0] = unity_SpecCube0_ProbePosition;
        d.probeHDR[0] = unity_SpecCube0_HDR;
        d.boxMax[1] = unity_SpecCube1_BoxMax;
        d.boxMin[1] = unity_SpecCube1_BoxMin;
        d.probePosition[1] = unity_SpecCube1_ProbePosition;
        d.probeHDR[1] = unity_SpecCube1_HDR;

下面是正确的代码段,直接替换就行,我在最新的unity库里面找到的替换代码,如下所示:

        UnityGIInput d;
        d.light = light;
        d.worldPos = i.posWorld;
        d.worldViewDir = viewDirection;
        d.atten = attenuation;
#if defined(LIGHTMAP_ON) || defined(DYNAMICLIGHTMAP_ON)
        d.ambient = 0;
        d.lightmapUV = i.ambientOrLightmapUV;
#else
        d.ambient = i.ambientOrLightmapUV.rgb;
        d.lightmapUV = 0;
#endif

        d.probeHDR[0] = unity_SpecCube0_HDR;
        d.probeHDR[1] = unity_SpecCube1_HDR;
#if defined(UNITY_SPECCUBE_BLENDING) || defined(UNITY_SPECCUBE_BOX_PROJECTION)
        d.boxMin[0] = unity_SpecCube0_BoxMin; // .w holds lerp value for blending
#endif
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
        d.boxMax[0] = unity_SpecCube0_BoxMax;
        d.probePosition[0] = unity_SpecCube0_ProbePosition;
        d.boxMax[1] = unity_SpecCube1_BoxMax;
        d.boxMin[1] = unity_SpecCube1_BoxMin;
        d.probePosition[1] = unity_SpecCube1_ProbePosition;
#endif

还有很多蛋疼的东西,等遇到了再一一记录下来!

你可能感兴趣的:(Unity3d学习旅程)