Mal*_*loc 3 c# canvas unity-game-engine
我的场景具有基本的游戏对象(相机,带两个孩子的帆布image和button)。

我制作了一个按钮的预制件,现在该预制件位于项目视图上,我想在脚本中实例化此预制件按钮,并希望将其绘制在画布中。
为此,我制作了一个脚本文件,将其作为脚本组件附加到画布上。这是我的脚本实现:
using UnityEngine;
public class QuizManager : MonoBehaviour {
public Transform suggestionBtn;
// Use this for initialization
void Start () {
Instantiate (suggestionBtn, new Vector3 (100, 400, 0), Quaternion.identity);
}
// Update is called once per frame
void Update () {
}
}
Run Code Online (Sandbox Code Playgroud)
当然,proposalBtn是预制的,这就是为什么我将其引用到脚本变量的原因(将预制件从项目视图拖到脚本组件)。

现在,当我运行游戏时,我注意到预制的克隆已添加到层次结构视图中所有游戏对象之上(我希望将其添加到画布中):

而且尺寸错误(非常小,几乎看不见),这里是放大后的外观

因此,我的问题是如何以正常大小正确地实例化预制件,并相对于画布(画布的子对象)正确地定位预制件?
谢谢
通过将实例分配给变量,然后更改其父级,可以正确初始化转换(在正确的游戏对象层次结构下)。
public class QuizManager : MonoBehaviour {
public Transform suggestionBtn;
// Use this for initialization
void Start () {
Transform clone = (Transform)Instantiate (suggestionBtn,
new Vector3 (100, 400, 0), Quaternion.identity);
// make instance the child of current object
clone.parent = gameObject.transform;
// adjust the scale
clone.transform.localScale = new Vector3(Xval, Yval, Zval);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在实例化后localScale从分配的clone变量中更改。