C# 从计算机上的文件导入Sprite并在可编写脚本的对象实例中引用它 字符脚本对象

C# 从计算机上的文件导入Sprite并在可编写脚本的对象实例中引用它 字符脚本对象,c#,unity3d,scriptable-object,C#,Unity3d,Scriptable Object,我有一个ScriptableObject“Character”,并创建了它的一个实例。它有一个精灵的字段,但我不想在开始游戏之前引用它 Character.cs 现在我有了一个特定的文件夹,玩家应该在其中放置自定义图像文件(.jpg、.png),比如“我的文档/我的游戏/我的图片”。当玩家按下UI中的按钮时,所有图像文件都将显示,然后用户可以单击图像,然后该精灵将在Character ScriptableObject的实例中引用 我还想添加一些要求,比如图像的尺寸应为200x200。这里需要三个

我有一个ScriptableObject“Character”,并创建了它的一个实例。它有一个精灵的字段,但我不想在开始游戏之前引用它

Character.cs 现在我有了一个特定的文件夹,玩家应该在其中放置自定义图像文件(.jpg、.png),比如“我的文档/我的游戏/我的图片”。当玩家按下UI中的按钮时,所有图像文件都将显示,然后用户可以单击图像,然后该精灵将在Character ScriptableObject的实例中引用


我还想添加一些要求,比如图像的尺寸应为200x200。

这里需要三个部分:

  • 从磁盘加载文件
  • 将从磁盘读取的数据加载到
    Texture2D
  • 从纹理创建
    精灵
  • (1) 您可以自己查找,从文件中读取字节非常简单。
    (2) 是
    (3) 使用

    您的最终代码如下所示:

    File f = //...step 1
    Texture2D t = //...step 2
    Rect size = new Rect(0, 0, t.width, t.height); //the part of the image to use; whole image
    int PIXELS_PER_UNIT = 100; //whatever your other sprites use
    Sprite s = Sprite.Create(t, size, Vector2.zero, PIXELS_PER_UNIT, 0, SpriteMeshType.FullRect);
    

    换句话说。我想从计算机上的文件加载。
    File f = //...step 1
    Texture2D t = //...step 2
    Rect size = new Rect(0, 0, t.width, t.height); //the part of the image to use; whole image
    int PIXELS_PER_UNIT = 100; //whatever your other sprites use
    Sprite s = Sprite.Create(t, size, Vector2.zero, PIXELS_PER_UNIT, 0, SpriteMeshType.FullRect);