!!!Texture2DからGetPixelする Assetとして読み込んだテクスチャやResourcesとして読み込める外部テクスチャは、 そのままではGetPixel/GetPixelsでテクスチャのピクセル情報にアクセスできません。 「GetPixel」「GetPixels」を呼ぶとエラーになります。 UnityException: Texture 'leaf_chip_01' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings. これのアクセス設定はImport Settingsにあります。 Assetsの画像を選択したInspectorで 「Texture Type」を「Advanced」に変更、 「Read/Write Enabled」のチェックボックスをOn、 「Default」のFormatを「RGB 24bit」または「RGBA 32bit」に変更、 としてApplyボタンを押します。 {{ref_image texture_resource_load.png}} これで、リソースとして読み込んだテクスチャのGetPixelsを使用できます。 !!スクリプトで自動的にGetPixelできるようにする 以下はAssetDatabaseを使用しますので、android/iOSでは動作しません。 要 : using UnityEditor; 以下のように一時的にテクスチャにアクセスできるようにすると、以降はGetPixel/GetPixelsも使用できるようになります。 Texture2D tex = インポートしたテクスチャ. string assetPath = AssetDatabase.GetAssetPath(m_tex); TextureImporter ti = TextureImporter.GetAtPath(assetPath) as TextureImporter; bool oldIsReadable = ti.isReadable; TextureImporterFormat oldImporterFormat = ti.textureFormat; ti.isReadable = true; ti.textureFormat = TextureImporterFormat.RGBA32; AssetDatabase.ImportAsset(assetPath); 使い終わった後で、 ti.isReadable = oldIsReadable ; ti.textureFormat = oldImporterFormat; AssetDatabase.ImportAsset(assetPath); として元に戻せばOKです。 ---- {{lastmodified}}