以编程方式更改Skybox材料(c#)

时间:2016-12-25 23:18:10

标签: c# unity3d material skybox

我想更改默认的天空盒材料,所以我制作了这条线......之后我才看到蓝色...我的错误是什么?

材料在远离

的Assets文件夹中
Material levelMat = Resources.Load(Application.dataPath + "/testeVR.mat", typeof(Material)) as Material;
RenderSettings.skybox = levelMat;

2 个答案:

答案 0 :(得分:2)

  

材料在远离

的Assets文件夹中

如果您使用Resources.Load加载材料,则无法将材料放置在“资源”文件夹中。

  

之后我只看到蓝色

levelMat变量为null。当您申请Skybox的材料为空时,您会变为蓝色,您可以通过在其后面添加Debug.Log(levelMat);来证明这一点。

  

Material levelMat = Resources.Load(Application.dataPath +   " /testeVR.mat" ;, typeof(Material))作为材料;

你也不能这样做。 Application.dataPath不应在Resources.Load函数的路径参数中使用。

您的代码中很难理解:

1 Resources.Load需要一个名为 Resources 的特殊文件夹。在Assets目录中创建一个名为 Resources 的文件夹,然后将 testeVR.mat 放入其中。

2 。您将文件扩展名放在Resources.Load函数的path参数中。因此, testeVR.mat 实际上应该是 testeVR ,而不是" .mat "。

只需在 Assets 文件夹中创建一个名为 Resources 的文件夹,然后将 testeVR 材料放在此处。它应该如下所示: Assets / Resources / testeVR.mat 。下面的代码应该用于加载它。

Material levelMat = Resources.Load("testeVR", typeof(Material)) as Material;

现在,假设您有另一个名为" Mats "的文件夹。它位于 Resources 文件夹中。您可以使用以下内容:

Material levelMat = Resources.Load("Mats/testeVR", typeof(Material)) as Material;

答案 1 :(得分:0)

只需创建材质的公共变量并在运行时放置要加载的材质,或者如果要通过某个函数加载它,请使用此

@model IEnumerable<WebApplication3.Models.ViewModel.AddingNewRole>
    @foreach (var item in Model)
{
    foreach (var v in item.LookUpRoles)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => v.LookUpRoleId)
            </td>
            <td>
                @Html.DisplayFor(modelItem => v.RoleName)
            </td>
            @for(var i=0; i<item.UserRoles.Count();i++)
            {
                if (v.LookUpRoleId == item.UserRoles[i].RoleId)
                {
                    <td>
                        <input id=@v.LookUpRoleId  class="use-this switch-toggle switch-flat-mini switch-toggle-flat" type="checkbox">
                        <label for=@v.LookUpRoleId></label>
                    </td>
                break;
                }
                <td>
                    <input id=@v.LookUpRoleId checked="checked" class="use-this switch-toggle switch-flat-mini switch-toggle-flat" type="checkbox">
                    <label for=@v.LookUpRoleId></label>
                </td>
                break;
            }

        </tr>
    }
}

skyboxMat存储了以统一方式拖动它的材质,然后它变成了你的天空盒

RenderSetting.sky = skyboxMat;