我正在尝试使用按钮UI元素统一制作滚动式清单系统。我为不是预制的按钮制作了一个模板,并使用该模板实例化了一个游戏对象,该对象应该可以克隆该模板。取而代之的是,它就像一个预制件,给我一个错误。
我碰巧发现了一个效果很好的tutorial。我按照本教程进行操作,直到必须设置实例化gameObject的父对象。老师做到这一点没有麻烦。我尚未尝试与制作此教程的人联系,因为它已经超过2年了,并且该频道至少有7个月没有活跃。我试图更改他的代码并删除按钮预制件。我在此站点上找到了similar problem,但是该解决方案对我而言无效。
[SerializeField]
private GameObject itemTemplate, inventoryTabWeapons;
private GameObject item;
public void GenerateItem(string name)
{
item = Instantiate(itemTemplate) as GameObject;
item.SetActive(true);
item.transform.SetParent(inventoryTabWeapons.transform, false); //This line is where the error brings me to.
}
我想在此处发布结果的屏幕截图,但是我显然没有足够的信誉点。
预期结果: 该按钮应成为ListContent的子级,在检查器中将ListContent设置为stockTabWeapons。
实际结果: 该按钮不是任何东西的子代。
我收到以下错误:
禁用设置驻留在预制资产中的转换的父级以防止数据损坏
此代码未使用任何预制件,唯一更改其父项的资产是模板的克隆,因此此错误对我而言毫无意义。
答案 0 :(得分:0)
确保itemTemplatePrefab是PREFAB,并确保ventureTabWeapons不是预制件,而是场景中的实际gameObject。然后将您的代码重新编写为以下内容:
[SerializeField]
private GameObject itemTemplatePrefab, inventoryTabWeapons;
public void GenerateItem(string name)
{
var item = Instantiate(itemTemplatePrefab);
item.SetActive(true);
item.transform.SetParent(inventoryTabWeapons.transform, false);
}
因此itemTemplatePrefab是一个预制件,而stockTabWeapons不是一个预制件。
答案 1 :(得分:0)
昨晚我退出编辑器并于今天早晨重新打开该错误时,该错误突然消失了,即使我已经尝试退出并重新打开编辑器。我设法解决了几个不同的错误。我想解决我的问题的方法就是等待。