【问题标题】:How to load a material file in Unity which is outside Assets folder?如何在 Unity 中加载 Assets 文件夹外的材质文件?
【发布时间】:2020-07-07 21:33:03
【问题描述】:

我有一架飞机,我想在运行时动态加载其材料。上述材料在 Unity 项目文件夹之外。如何在我的游戏中加载它?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Experiment : MonoBehaviour
{
    public Material materialToChange;
    Material m_Material;

    void Start()
    {
        m_Material = GetComponent<Renderer>().material;
    }

    void Update()
    {
        if(Input.GetKeyDown("a"))
        {
            GetComponent<Renderer>().material=materialToChange;
        }
    }
}

所以在这里我希望 materialToChange 是一个材质文件,我想给出它的路径并且在 Unity Project 文件夹之外。

【问题讨论】:

  • 为什么不能保留在项目中?
  • 我将加入@gameDev_Unity 的问题并补充:如果您希望之后能够调整颜色或纹理(图像)等内容,您可以从外部加载这些内容(图像文件或例如带有颜色和设置的 JSON/XML 文件).. Material(这是根据着色器的一个实例)我不会尝试从外部加载...

标签: c# unity3d


【解决方案1】:

Unity 提供允许在运行时加载资产(游戏对象、材质等)的 AssetBundle。 例如,目标是创建一个包含新材料的 AssetBundle。然后你可以下载这个 AssetBundle(从本地路径或从网络)并提取你的资产。 您将能够使用新材料更改您的材料!

看看这个页面:Unity AssetBundles

【讨论】:

    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 2019-04-24
    相关资源
    最近更新 更多