C# 如何在放入资产包的Unity脚本中使用公共变量
我搜索了这个问题,发现了很多相关信息,但有些不一致,没有明确的答案 在一个Unity项目中,我使用带有脚本(C#)的游戏对象创建资产包。我已经学会了如何做到这一点,而且很有效 我的问题是,我最终需要保留在构建资产包之前分配的脚本中公共变量的值。也就是说,我的预置有一个带有公共变量的脚本。我多次使用不同的公共值对每个实例进行实例。我需要所有这些来度过这次资产捆绑旅行 因此,我目前的进程是:C# 如何在放入资产包的Unity脚本中使用公共变量,c#,scripting,unity3d,assetbundle,C#,Scripting,Unity3d,Assetbundle,我搜索了这个问题,发现了很多相关信息,但有些不一致,没有明确的答案 在一个Unity项目中,我使用带有脚本(C#)的游戏对象创建资产包。我已经学会了如何做到这一点,而且很有效 我的问题是,我最终需要保留在构建资产包之前分配的脚本中公共变量的值。也就是说,我的预置有一个带有公共变量的脚本。我多次使用不同的公共值对每个实例进行实例。我需要所有这些来度过这次资产捆绑旅行 因此,我目前的进程是: 从游戏对象中删除脚本 将脚本构建到程序集中 将游戏对象和组件打包到资产包中 将捆绑包下载到新项目中 解包资产
AddComponent()
AddComponent
附加它,如果脚本已经是附加的组件,我就不能真正这样做。因此,在绑定之前删除它们可以解决这些问题
我错过了什么?我的方法哪里有错?我读到当绑定时,公共值保存在游戏对象上的脚本引用中,但是当我删除脚本组件时,我当然会丢失它
那么,请问,我如何通过资产捆绑流程维护公共价值?捆绑之前我是否应该删除脚本组件?如果是这样,我应该如何以不同的方式管理脚本?我需要捆绑脚本程序集和源文件吗?(我目前只捆绑程序集),这不会在附加程序集时产生冗余吗?Unity不会将程序集存储在捆绑包中。它只存储脚本的序列化数据(即公共变量和具有[SerializeField]属性的变量)。但它也存储每个脚本类型的脚本程序集哈希,因此您必须在同一项目中与主可执行文件构建捆绑包,以避免丢失引用 因此,您不必从游戏对象中删除脚本,但您必须在同一个unity项目中构建捆绑包,并在代码更改时重新构建它们