GameObject.CreatePrimitive是直接在runtime的时候创建一个Unity基本的的物体,比如:
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);//创建一个Cube
运行之后在Editor里显示如下图。
但是在build之后显示却出现了问题,Cube显示成粉色。
首先粉色的主要原因就是shader不正确,Unity没找到这个shader。
没找到shader是因为Unity在build的时候先在project里找一遍prefab和scene里的shader,把这些shader都一起打包。
但是因为CreatePrimitive是Runtime的时候执行的,它自带的Shader在打包的时候并不会被Unity找到,也就不会被打包。
所以就成了这样。
只要在下面的设置里手动加上一个Standard的Shader就可以了。
当然,大部分时候这个Standard的shader是肯定会被什么物体用掉的,所以一般项目里东西多了的时候这个shader自然就被别的物体带着一起打包了,不会出现这个问题。只有基本上完全空的Project才能出现这种奇葩问题。
文章评论