Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 实例化游戏对象bug的阴影?_Unity3d - Fatal编程技术网

Unity3d 实例化游戏对象bug的阴影?

Unity3d 实例化游戏对象bug的阴影?,unity3d,Unity3d,我目前正在做一个项目,我的下一个目标是能够在运行时实例化一个预置,我设法做到了这一点,但我注意到我的实例化预置没有任何阴影。我尝试将完全相同的对象拖动到场景中,它可以投射阴影。我在谷歌上搜索了一下,发现很多评论都认为这是版本5中的Unity3d错误,只是好奇是否有人遇到了同样的问题,并设法找到了一种迂回的方法来解决这个问题 我正在繁殖的预制房屋基本上都是不同的 带有阴影的平面和立方体将在场景中拖动,而没有阴影的平面和立方体将实例化 非常感谢您抽出时间阅读 编辑1 因此,我尝试了一些测试、尝试和

我目前正在做一个项目,我的下一个目标是能够在运行时实例化一个预置,我设法做到了这一点,但我注意到我的实例化预置没有任何阴影。我尝试将完全相同的对象拖动到场景中,它可以投射阴影。我在谷歌上搜索了一下,发现很多评论都认为这是版本5中的Unity3d错误,只是好奇是否有人遇到了同样的问题,并设法找到了一种迂回的方法来解决这个问题

我正在繁殖的预制房屋基本上都是不同的

带有阴影的平面和立方体将在场景中拖动,而没有阴影的平面和立方体将实例化

非常感谢您抽出时间阅读

编辑1 因此,我尝试了一些测试、尝试和错误,我注意到有阴影和没有阴影的游戏对象之间的唯一区别是,没有阴影的游戏对象来自加载的assetbundle

我的问题似乎与这家伙的帖子相似

编辑2


我使用的是Unity版本5.5.1f1,如果这有助于

转到您的预置并检查
网格渲染器
,它必须激活
接收阴影
投射阴影
属性,如图所示:

然后记得更新预制件:


将一个
预设
拖动到场景中,从
网格渲染器
激活
接收阴影
投射阴影
属性,最后
应用
更改。

看起来像是通过assetbundles对其着色器进行了实例化,我用这段代码重新设置了场景中的所有着色器,这对我很有用

Shader standardShader;

void Start() {
    standardShader = Shader.Find("Standard");
}

void changeShader() // because shadow for assetbundle is cucked.
{
    var renderers = FindObjectsOfType<Renderer>() as Renderer[];
    for (int i = 0; i < renderers.Length; i++)
        renderers[i].material.shader = standardShader;
}
Shader-standardShader;
void Start(){
standardShader=Shader.Find(“标准”);
}
void changeShader()//因为assetbundle的阴影被勾住了。
{
var renderers=FindObjectsOfType()作为呈现程序[];
对于(int i=0;i

并在所有实例化完成后调用它。

Hi!谢谢你的帮助,我检查了你提到的设置,不幸的是><它们都设置正确,我已经用一些关于我的问题的最新发现更新了帖子,希望对你有所帮助!谢谢,也许这个
renderers[i].material.shader=shader.Find(renderers[i].material.shader.name)以便在@haru the potato和@Logic1不是“标准”的情况下保留原始着色器-我修改了一个方法以包含这两个答案,并允许我将游戏对象传递到目标,并在加载的AssetBundle对象上工作得很好:`void FixShaders(GameObject g){Renderer[]renderers=g.GetComponentsInChildren();for(int i=0;i