Unity3d 如何在运行时游戏对象下创建运行时按钮
我们有没有办法在运行时游戏对象下创建一个运行时按钮?我可以从UIToolkit继承所有组件/材料来创建一个运行时游戏对象 这是我的密码:Unity3d 如何在运行时游戏对象下创建运行时按钮,unity3d,Unity3d,我们有没有办法在运行时游戏对象下创建一个运行时按钮?我可以从UIToolkit继承所有组件/材料来创建一个运行时游戏对象 这是我的密码: public class loadImage : MonoBehaviour { public UIToolkit duplicate_kit; public Material material; public UIButton b1, b2; public MeshFilter meshFilter; pub
public class loadImage : MonoBehaviour
{
public UIToolkit duplicate_kit;
public Material material;
public UIButton b1, b2;
public MeshFilter meshFilter;
public MeshRenderer meshRenderer;
public Mesh _mesh;
void initKit()
{
Material duplicateMaterial = new Material (material.shader);
duplicateMaterial.CopyPropertiesFromMaterial(material);
material = duplicateMaterial;
GameObject loadImageToolkit = new GameObject("duplicate_toolkit");
loadImageToolkit.transform.parent = GameObject.Find("UI").transform;
loadImageToolkit.layer = LayerMask.NameToLayer("UILayer");
duplicate_kit = loadImageToolkit.AddComponent<UIToolkit>() ;
duplicate_kit.texturePackerConfigName = "friendsImageSheet";
duplicate_kit.material = duplicateMaterial;
meshRenderer = loadImageToolkit.AddComponent<MeshRenderer>();
meshRenderer.renderer.material = duplicateMaterial;
meshFilter = loadImageToolkit.AddComponent<MeshFilter>();
_mesh = meshFilter.mesh;
}
void Start()
{
initKit();
// b1 = UIButton.create( duplicate_kit, "FriendsAvatar.png","FriendsAvatar.png",0,0);
// b1.pixelsFromTopLeft ( 60, 0 );
// StartCoroutine(getImage(b1));
b2 = UIButton.create( duplicate_kit, "FriendsAvatar.png", "FriendsAvatar.png" , 0,0 );
b2.pixelsFromTopLeft( 120, 0 );
StartCoroutine(getImage(b2));
b1 = UIButton.create( (UIToolkit)GameObject.Find("duplicate_toolkit").GetComponent(typeof(UIToolkit)), "FriendsAvatar.png","FriendsAvatar.png",0,0);
b1.pixelsFromTopLeft ( 120, 0 );
StartCoroutine(getImage(b1));
}
IEnumerator getImage(UIButton uib)
{
WWW imageRequest = new WWW("https://graph.facebook.com/xxxxxxxxx/picture?type=small");
yield return imageRequest;
Texture tex = imageRequest.texture;
uib.manager.renderer.material.mainTextureScale = new Vector2(18.0f,20.05f);
uib.manager.renderer.material.mainTexture = tex;
}
}
公共类loadImage:monobhavior
{
公共UIToolkit复制工具;
公共材料;
公共UIB1、b2按钮;
公共网过滤器;
公共网格渲染器;
公共网格(公共网格),;
void initKit()
{
材质重复材质=新材质(Material.shader);
复制材料。复制材料(材料)的属性;
材料=重复材料;
GameObject loadImageToolkit=新GameObject(“复制工具”);
loadImageToolkit.transform.parent=GameObject.Find(“UI”).transform;
loadImageToolkit.layer=LayerMask.NameToLayer(“UILayer”);
duplicate_kit=loadImageToolkit.AddComponent();
重复_kit.texturePackerConfigName=“friendsImageSheet”;
重复材料=重复材料;
meshRenderer=loadImageToolkit.AddComponent();
meshRenderer.renderer.material=重复材质;
meshFilter=loadImageToolkit.AddComponent();
_mesh=meshFilter.mesh;
}
void Start()
{
initKit();
//b1=UIButton.create(复制工具包,“FriendsAvatar.png”,“FriendsAvatar.png”,0,0);
//b1.从左上角开始的像素(60,0);
//start例程(getImage(b1));
b2=UIButton.create(复制工具包,“FriendsAvatar.png”,“FriendsAvatar.png”,0,0);
b2.自左上角的像素(120,0);
start例程(getImage(b2));
b1=UIButton.create((UIToolkit)GameObject.Find(“duplicate_toolkit”).GetComponent(typeof(UIToolkit)),“FriendsAvatar.png”,“FriendsAvatar.png”,0,0);
b1.从左上角开始的像素(120,0);
start例程(getImage(b1));
}
IEnumerator getImage(UIButton uib)
{
WWW-imageRequest=新建WWW(“https://graph.facebook.com/xxxxxxxxx/picture?type=small");
提出退货申请;
纹理tex=imageRequest.Texture;
uib.manager.renderer.material.mainTextureScale=新矢量2(18.0f,20.05f);
uib.manager.renderer.material.mainTexture=tex;
}
}
主要目标是b2按钮应该出现在duplicate_toolkit(游戏对象)下
就像:
复制工具集
UIButton
我没有使用过UITookit,但一般来说,您可以通过连接以下组件来统一使用UITookit:
b2.transform.parent = duplicate_toolkit.transform;
嗨,凯!感谢您的回复,它给了我这个错误CS0200:属性或索引器'UnityEngine.GameObject.transform'无法分配到(它是只读的)似乎UIToolkit以一种不同于标准的方式完成所有工作。我刚刚看到,即使是b2也没有显示在层次结构视图中。是的,Kay,所有内容都是在运行时脚本上设置的。一切正常,我指的是组件,唯一的问题是UIButton,它是不会出现在duplicate_toolkit运行时游戏对象下面的bs。