回答
如果您希望默認限制導入紋理的大小,除了導入後編輯最大大小之外,沒有直接的方法。默認情況下總是1024.
然而,您可以編寫自定義AssetPostProcessor(儘管它的名稱)也有一個OnPreprocessTexture方法,您可以使用該方法設置導入設置。一個非常裸露的骨頭例子是這樣的:
using UnityEngine;
using UnityEditor;
public class DefaultTextureSizer : AssetPostprocessor
{
void OnPreprocessTexture()
{
TextureImporter tex_importer = assetImporter as TextureImporter;
tex_importer.maxTextureSize = 512; //Some other max size than the default
}
}
,將確保如果你使用OnPostprocessTexture
可以讀取所有進口的紋理將有一個最大尺寸(在這種情況下)512
我簡直不敢相信Unity仍然沒有在項目設置中爲整個項目添加一個簡單的默認導入設置,很明顯大多數開發移動設備的人幾乎從不會使用4096紋理,例如,如果他們在某些他們只能爲少數案件指定案例。相反,我們不得不等待幾個小時才能導入具有巨大紋理的新資產,然後用較小的最大尺寸重新導入它們,否則我們不得不搗亂腳本,並找出困難的方式。這是至少6年後,第一個線程出現要求這個功能。 – anything
每個紋理的實際尺寸並設置最大尺寸。
,當我想降低紋理低端手機的分辨率我使用這個代碼生成:
public void OnPostprocessTexture(Texture2D texture)
{
if (!TextureResizingEnabled)
return;
TextureImporter textureImporter = assetImporter as TextureImporter;
TextureImporterFormat format;
TextureImporterSettings textureImporterSettings = new TextureImporterSettings();
textureImporter.ReadTextureSettings(textureImporterSettings);
//grabbing the max texture dimension for use in size calculation
float size = Mathf.Max(texture.width, texture.height);
Debug.LogError("original size = " + size + " orig max size = " + textureImporterSettings.maxTextureSize);
// Getting the smallest texture size between original texture size, to be resized by TextureResizingFactor, and maxTextureSize set in asset importer settings:
size = Mathf.Min(Mathf.Pow(2f, Mathf.Floor(Mathf.Log(size, 2f)) - TextureResizingFactor), textureImporterSettings.maxTextureSize);
Debug.LogError("chosen size = " + size);
// we won't make any changes if the calculate size is lesser than the minimum on Unity dropdown box (32):
if (size >= 32)
{
textureImporterSettings.maxTextureSize = (int)size;
textureImporter.SetTextureSettings(textureImporterSettings);
}
}
它基本上除以2的最大紋理大小,所以如果你有最大尺寸紋理等於2048它將設置爲1024,而同一項目中的512紋理將被設置爲256.這對於降低內存使用情況非常有用。
在這種情況下使用OnPostprocessTexture
的缺點是我必須重新導入紋理兩次:第一個將更改紋理最大大小,第二個(禁用此代碼)將實際應用新的最大大小。發生這種情況是因爲我們在導入紋理後設置了新尺寸,但這是唯一的方法,因爲無法讀取OnPreprocessTexture
中的紋理尺寸。
- 1. 處理Android的紋理尺寸限制
- 2. DirectX紋理尺寸
- 3. CCSprite紋理尺寸
- 4. 如何在更改紋理後調整精靈的尺寸
- 5. Android設備GL_MAX_TEXTURE_SIZE限制,安全紋理尺寸
- 6. 紋理尺寸限制? Android Open GL ES 2.0
- 7. OpenGL CubeMap紋理尺寸
- 8. 尺寸限制gzipinputstream
- 9. 合理的紋理尺寸在android
- 10. JPEG:任何尺寸限制?
- 11. 瓷磚紋理如果雪碧的尺寸大於紋理
- 12. .ipa尺寸大於整體項目尺寸
- 13. 如何限制標籤標籤尺寸?
- 14. 使用JOGL時的紋理尺寸
- 15. DirectX9和不兼容的紋理尺寸
- 16. 如何用wkhtmltopdf處理尺寸/尺寸?
- 17. Opengl-es紋理尺寸與文件尺寸性能
- 18. XNA紋理加載速度(對於超大的紋理尺寸)
- 19. 數據集限制尺寸
- 20. 限制圖像尺寸
- 21. RichTextBox最大尺寸限制?
- 22. 在Three.js中修復了紋理尺寸
- 23. GL最大紋理尺寸政策
- 24. Android:AndEngine - AnimatedSprite紋理尺寸太大?
- 25. OpenGL ES - 降低紋理質量和紋理尺寸
- 26. 如何在更改紋理後更改CCSprite的尺寸?
- 27. 如何使用塊和螺紋尺寸來處理2D圖像
- 28. 如何在OpenGL中渲染超大尺寸紋理
- 29. 哪個更有效率,哪個手機 - 紋理尺寸
- 30. UIView。我如何限制擴展到一個尺寸只有
我建議爲您的瀏覽器安裝拼寫檢查插件。另外請[不要添加標籤到您的問題標題](http://stackoverflow.com/search?q=user%3A183527+ [unity3d]),已經有標籤。 – user1306322