2014-05-16 2 views
1

: how to change Texture Max Size with scriptingEditor class "Texture Importer" + Apply import settings question, 난 그게 내 경우 텍스처 당신이 자산으로 질감을 저장할 필요가 최대 크기 ...텍스처 최대이 기사에 따라 크기

을 변경 실현, 나는 통해 보내 BIN 파일이 네트워크를 (Application.persistentDataPath + "/ Binaries /") 경로로 가져온 다음 BINs의 데이터를 텍스처로 검색하고 PNG 파일로 저장합니다 (Application.dataPath + "/ textures/Weather /"). . 이제 파일이 생겨 최대 크기의 텍스처를 변경할 수 있습니다.

List<Texture2D> SetupTextures(List<string> textureNames) 
{ 
    string fileName; 
    List<Texture2D> textures = new List<Texture2D>(); 
    string[] subStrings = Regex.Split(texturesData, "Assets"); 
    string assetDatabasePath = "Assets" + subStrings [1]; 
    //print ("AAA: " + assetDatabasePath + textureNames[0]); 

    foreach(string name in textureNames) 
    { 
     fileName = assetDatabasePath + name; 

      #if UNITY_EDITOR 
     TextureImporter tImporter = AssetImporter.GetAtPath(fileName) as TextureImporter; 
     if(tImporter != null) { 
     tImporter.mipmapEnabled = true; 
     tImporter.isReadable = true; 
     tImporter.maxTextureSize = 256; 
     tImporter.textureFormat = TextureImporterFormat.AutomaticTruecolor; 
     AssetDatabase.ImportAsset(fileName, ImportAssetOptions.ForceUpdate); 
     //print ("TextureImporter successfully settled."); 
     } else { 
     //print ("Faild to set TextureImporter!"); 
     } 

     Texture2D texture = 
     (Texture2D) AssetDatabase.LoadAssetAtPath (fileName, typeof(Texture2D)); 

     if(texture != null) { 
     //renderer.material.mainTexture = texture; 
     //renderer.material.SetTexture("_Texture2", texture); 
     textures.Add(texture); 

     //print ("Texture successfully added to list."); 
     } else { 
     //print ("Faild to add texture to list!"); 
     } 
      #endif 
    } 

    return textures; 
} 

문제는 AssetImporter.GetAtPath()가 경로에서 새로 생성 된 PNG 파일을 확인하지 못합니다. 하지만 다른 창으로 다시 초점을 맞추고 통합에 초점을두면로드가 시작되고 AssetImporter.GetAtPath()가 필요한 파일을 가져옵니다.

1) 포커스를 변경하지 않고 어떤 방식으로도 처리 할 수 ​​있습니까?

2) 또는 디스크에 저장하지 않고 텍스처 최대 크기를 변경할 수 있습니까?

+0

BIN 파일을 코드로 PNG로 변환합니까? –

+0

예. 하지만 유니티 창에 다시 초점을 맞추지 않거나 프로그램을 두 번째로 실행하지 않으면 Unity는 새로 생성 된 PNG 파일을 보지 못합니다. – Farik

+0

그래서 도움이 되었습니까? –

답변

0

AssetDatabase.Refresh을 호출하려면 BIN-S를 PNG-S로 변환 한 후, SetupTextures으로 전화하기 전에해야합니다. 어쩌면 당신은 깃발을 가지고 놀아야 할 것이지만, 제 신청서에서는 ImportAssetOptions.Default을 사용했습니다.

또한 SetupTextures (또는 SetupTextures 끝)을 호출 한 후에 AssetDatabase.SaveAssets에 대한 호출을 추가합니다. Unity가 모든 것을 디스크에 저장했는지 확인하십시오.

관련 문제