c# - 如何在不使用预制件的情况下以编程方式创建 Sprite ?

标签 c# unity-game-engine

嗯。 。我已经找了很长一段时间,但到处都得到相同的答案,这是我特别不想做的。

这是我的问题案例:

我有不同类型的图像用于不同的 Sprite 。我不确定我必须展示多少不同的sprites(images)。因此,我必须创建 Sprite 并在运行时以编程方式应用纹理。

现在,我绝对不能使用prefebs,因为它会限制我可以使用的不同 Sprite 的数量。而且,更改游戏中一个 Sprite 预置实例的纹理将更改所有 Sprite 预置,这在我的情况下是 Not Acceptable 。

有没有一种方法可以创建 Sprite 而无需创建静态预置?

无论我在哪里寻找解决方案,每次我都会得到相同的答案“创建预置”,这在我的情况下是无法完成的。

请引导我走向正确的方向。

最佳答案

您应该使用原始类型的游戏对象。是的,它们可以在不使用预制件的情况下创建。 另外,如果您正要使用 Sprite ,原始类型“Plane”将执行您想要的相同操作。

尝试以下操作:-

  1. 在场景中创建一个空的游戏对象,并将其重新定位到 (0,0,0)
  2. 将包含以下代码的脚本附加到此空游戏对象

    public int numberOfTiles=16;
    Vector3 TilePosition;
    
    void Start () 
    {
        TilePosition = Vector3.zero;
        for (int i = 1; i<=numberOfnumberOfTiles; i++) 
        {
            GameObject temp = GameObject.CreatePrimitive(PrimitiveType.Plane);
            temp.name = "Tile_"+i;
            temp.transform.position = TilePosition;
            temp.transform.Rotate(90f,180f,0,Space.World);
            temp.transform.localScale = new Vector3(0.66f,1f,0.66f);
            temp.transform.parent = transform;
            Texture2D tex =(Texture2D) Resources.LoadAssetAtPath("Assets/Resources/Texture/Tile"+i,typeof(Texture2D));
            temp.renderer.material.mainTexture = new Texture2D (640, 960, TextureFormat.ARGB32, false);
            temp.renderer.material.mainTexture = tex;
            TilePosition = new Vector3(TilePosition.x,TilePosition.y+(temp.transform.localScale.y*6.59f),TilePosition.z);
        }
    
    }
    

您可以根据需要更改比例。

希望这有帮助。

关于c# - 如何在不使用预制件的情况下以编程方式创建 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25485026/

相关文章:

c# - json_agg() 数组到对象

c# - 在 ASP.NET/C# 中使用 GDI+ 裁剪图像时抗锯齿?

ios - NS无效参数异常 : +[NSBundle fyb_appTransportSecuritySettings]: unrecognized selector sent to class 0x3bd0c3c0

c# - Unity3D - 通过单击对象将其移动到相反方向

unity-game-engine - 使用Physics.Raycast 检查是否接地时出现问题

javascript - 为什么我的角色不会动?我不明白为什么我的 Rigidbody 2D 不起作用

c# - 统一 C# Firebase : What do I do if "task.Exception.Message" returns "one or more errors have occurred" and is not returning data?

C# - 查找 Winform 应用程序的坐标

c# - 在下载文件之前从 http 请求中获取文件/AssetBundle 大小

c# - WPF 拼写检查语言