C# 如何加载资产包unity所需的脚本?

C# 如何加载资产包unity所需的脚本?,c#,unity3d,assetbundle,C#,Unity3d,Assetbundle,我正在做一个unity项目,在这个项目中,游戏场景可以下载并在运行时运行。我通过制作场景的资产包并加载它来实现它,但我面临的问题是场景所需的脚本并没有包含在资产包中。我刚刚被困在这里,有人能帮我吗,我如何下载/加载所需的脚本或者我如何将它们包含在资产包中。这样我也可以在运行时加载它们 对不起,英语不好。 谢谢。您可以在资产包中添加任何类型的资产。 脚本(.cs文件)将无法包含在资产包中 添加所有脚本/材质/的方式。。根据场景中包含的内容,您需要将它们全部存储在一个文件夹中。然后,您可以将整个文件

我正在做一个unity项目,在这个项目中,游戏场景可以下载并在运行时运行。我通过制作场景的资产包并加载它来实现它,但我面临的问题是场景所需的脚本并没有包含在资产包中。我刚刚被困在这里,有人能帮我吗,我如何下载/加载所需的脚本或者我如何将它们包含在资产包中。这样我也可以在运行时加载它们

对不起,英语不好。 谢谢。

您可以在资产包中添加任何类型的资产。 脚本(.cs文件)将无法包含在资产包中

添加所有脚本/材质/的方式。。根据场景中包含的内容,您需要将它们全部存储在一个文件夹中。然后,您可以将整个文件夹指定给一个
AssetBundle标记
,如场景所示

客户端需要下载的场景必须位于相同的资产捆绑标签中

注意:如果无法将它们全部存储在同一文件夹中,只需为要添加到捆绑包中的每个资产(或子文件夹)手动分配其资产捆绑包标签即可

现在,您可以运行一个方法为您创建捆绑包,如下所示:

[MenuItem(“捆绑包/创建所有捆绑包”)]
静态空心建筑所有组合墙()
{
BuildPipeline.BuildAssetBundles(Path.Combine(Application.dataPath,“AssetBundleLocation”)、BuildAssetBundleOptions.None、BuildTarget.StandaloneWindows);
}
有关如何构建资产捆绑包的详细信息

现在,除脚本文件外,所有需要的文件都应存储在资产包文件中,“编辑”。查看类以加载和卸载捆绑包/资产


编辑

将脚本文件包含在资产包中的实际工作是将代码写入TextAsset文件(.txt)

从资产包加载后,这些文件将为您提供一个字符串

AssetBundle ab=AssetBundle.LoadFromFile(Path.Combine(Application.dataPath,“StreamingAssets/exampleassetbundle”);//您的资产包路径
TextAsset TextAsset=ab.LoadAsset(ab.GetAllAssetNames()[0]);//在我的示例中,资产包中只有一个文件,即TextAsset
字符串flatCode=textAsset.text;
现在的问题是,您必须将平面字符串代码编译为实际的C#类。 这称为运行时编译

有很多关于如何做的教程

这有点棘手,但会做你想做的事


注意:IOS和Android可能不允许您在运行时编译代码,因此取决于您的目标平台,您必须进一步调查。

我收到警告“脚本资产不能包含在AssetBundles中:”assets/Scripts/ButtonController.cs,附加图像也请检查。这是真的。经过更多的调查,任何资产都可以放入资产包中,但不包括.cs文件(包括MonoBehavior)。我会编辑我的帖子,告诉你我会怎么做。