2016-05-21 16 views
1

我目前做一個關卡編輯器,其中用戶從文件導入瓷磚,目前它的工作原理,不同的是我想每個單位像素每個導入精靈更改爲32如何在導入WWW後單位更改sprite的像素?

這裏其實是我的代碼:

//Get tiles from file 
     StreamReader reader = new StreamReader(Application.dataPath + "/../Maps/" + mapName + "/Tiles/tiles.txt"); 
     string line = reader.ReadLine(); 

     while (!string.IsNullOrEmpty (line)) { 
      string[] param = line.Split (','); 
      foreach (TileTexture t in tileTextures) { 
       if (t.name == param [0]) { 
        Sprite sprite = Sprite.Create (t.texture, new Rect (0, 0, t.texture.width, t.texture.height), new Vector2 (0, 0)); 
        sprite.pixelsPerUnit = 32;//THIS LINE DOESNT WORK, GIVES READONLY ERROR 
        Tile tile = new Tile (param[0], sprite, new Vector2(float.Parse(param[1]), float.Parse(param[2]))); 
        tile.sprite.texture.filterMode = FilterMode.Point; 
        tiles.Add (tile); 
       } 
      } 

      line = reader.ReadLine(); 
     } 

回答

3

在功能Sprite.Create()上我們看到,函數簽名是

public static Sprite Create(Texture2D texture, 
          Rect rect, 
          Vector2 pivot, 
          float pixelsPerUnit = 100.0f, 
          uint extrude = 0, 
          SpriteMeshType meshType = SpriteMeshType.Tight, 
          Vector4 border = Vector4.zero); 

我們看到,我們可以通過pixelsPerUnit作爲可選的參數爲函數的ñ。您只能在此處執行此操作,並且以後無法更改,因爲如您所知,字段pixelsPerUnitreadonly字段(意味着它無法更改)。所以,你只需要在這裏傳遞32f。正確的代碼是

if (t.name == param [0]) { 
       Sprite sprite = Sprite.Create (t.texture, new Rect (0, 0, t.texture.width, t.texture.height), new Vector2 (0, 0), 32f); 
       Tile tile = new Tile (param[0], sprite, new Vector2(float.Parse(param[1]), float.Parse(param[2]))); 
       tile.sprite.texture.filterMode = FilterMode.Point; 
       tiles.Add (tile); 
      } 
+0

謝謝你,我會盡快將你的問題標記爲正確的:D –

相關問題