Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 如何在运行时游戏对象下创建运行时按钮_Unity3d - Fatal编程技术网

Unity3d 如何在运行时游戏对象下创建运行时按钮

Unity3d 如何在运行时游戏对象下创建运行时按钮,unity3d,Unity3d,我们有没有办法在运行时游戏对象下创建一个运行时按钮?我可以从UIToolkit继承所有组件/材料来创建一个运行时游戏对象 这是我的密码: public class loadImage : MonoBehaviour { public UIToolkit duplicate_kit; public Material material; public UIButton b1, b2; public MeshFilter meshFilter; pub

我们有没有办法在运行时游戏对象下创建一个运行时按钮?我可以从UIToolkit继承所有组件/材料来创建一个运行时游戏对象

这是我的密码:

    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。