當前位置:首頁 » 激光切割 » unity如何切割sprite表

unity如何切割sprite表

發布時間: 2021-03-08 02:15:03

Ⅰ unity spritesheet怎麼用

有的人可能和我一樣,剛開始學unity,所以對有的東西不是很熟,就不知道unity spritesheet怎麼用,其實我也一樣,所以在網上找了一下。

如果你從來沒有使用過spritesheet,你可以把它看作是一張巨大的圖片,你可以把許許多多的sprite放進去。與spritesheet對應的,還有一個plist文件,這個文件指定了每個獨立的sprite在這張「大圖」裡面的位置和大小,當你在代碼之間需要使用這個sprite的時候,就可以很方面地使用plist文件中的這些信息來獲取sprite。

為什麼這會提高效率呢?因為cocos2d對它進行了優化!如果你使用spritesheet來獲取sprite,那麼當場景中有許多sprite的時候,如果這些sprite共享一個spritesheet,那麼cocos2d就會使用一次OpenGLES調用來渲染這些sprite。但是,如果是單個的sprite的話,那麼就會有N次OpenGLEScall,這個代價是相當昂貴的。

簡而言之--使用spritesheet會更快,尤其是當你有很多的sprite的時候!(使用spritesheet還可以減少游戲佔用的內存大小。

由於要使用spritesheet,你當然可以手工用圖片編輯器來創建,然後創建一個plist指定每一個sprite在spritesheet裡面的位置和大小。然後,那樣將會是一個非常傻比的行為,因為RobertPayne已經開發出了一個非常好用的工具,叫做Zwoptex,它可以幫助我們自動生成這一切!

Zwoptex To Victory!
如果你還沒有這個工具,那麼可以從 zwoptexapp.com上面下載。它有一個免費的Flash版本和一個收費的安裝版,但是最近我使用的是可安裝的版本。

安裝完這個工具之後,選擇File\New,然後你將會看到一個空白窗口。打開你先前下載的熊的圖片,並把它們拖到這個窗口裡面。

你會看到,所有的熊的圖片都層疊在一起。我們需要將他們攤開放在spritesheet上面,因此在Layout部分點擊「Apply」來排序。

當你這樣做以後,你會注意到,默認的畫布(512×512)太小了,不足以把所有的熊圖片裝下。所以,還會有一些圖片層疊在一起。因此,我們在Canvas部分把畫布改成512×102 4,然後在Layout部分點擊「Apply」來重新排序它們。

我們馬上要完成了--但是,請注意,有些熊的圖片比其它寬一些。如果你看一下原圖,你會發現和原圖尺寸不一樣了--這是因為,Zwoptex在默認情況下會把圖片周圍的透明區域剪裁掉。

對於這些圖片,它們並不是我們最終需要的,因為對於動畫來說,這些圖片的位置信息已經錯亂了(由於透明區域的裁剪)。還好,這非常容易解決--在工具欄上選擇」Untrim「,然後再點」Apply「。

Ⅱ unity sprite怎麼獲取切割後的圖

學習了一段時間的unity,對裡面的組件有一個大致的了解,但是具體操作來說還不是很熟悉,今天看了一片關於unity sprite怎麼獲取切割後的圖的文章,感覺還不錯。
假設有一張png/tga圖集,導入到Unity,放置目錄"Assets/Resources/UI"(UI文件夾可替換成其他的,重要的是要在"Assets/Resources/"路徑下),

為了可以使用Unity自帶的精靈切割,要將紋理類型改成"Sprite","Sprite Mode"改成"Multiple","Format"改成"Truecolor",點擊"Apply"按鈕進行應用。

接著,點擊"Sprite Editor"打開精靈編輯器,點擊左上角的"Slice"按鈕,彈出切片設置,再次點擊裡面的"Slice"按鈕,就會自動對圖片進行切割,

在對切割不完整的地方進行修正後,點擊右上角的"Apply"按鈕,進行保存。可以看到Project視圖下這個圖集,已經被分割出許多小圖了,

接下來,因為要對圖片進行讀寫操作,要更改圖片的屬性才能進行,否則會提示如下:
UnityException: Texture 'testUI' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.
將圖片紋理類型更改為"Advanced",將"Read/Write Enabled"屬性進行打勾,
創建一個腳本文件,代碼如下:
using UnityEngine;
using UnityEditor;
public class TestSaveSprite
{
(MenuItem("Tools/導出精靈"))
static void SaveSprite()
{
string resourcesPath = "Assets/Resources/";
foreach (Object obj in Selection.objects)
{
string selectionPath = AssetDatabase.GetAssetPath(obj);
// 必須最上級是"Assets/Resources/"
if (selectionPath.StartsWith(resourcesPath))
{
string selectionExt = System.IO.Path.GetExtension(selectionPath);
if (selectionExt.Length == 0)
{
continue;
}
// 從路徑"Assets/Resources/UI/testUI.png"得到路徑"UI/testUI"
string loadPath = selectionPath.Remove(selectionPath.Length - selectionExt.Length);
loadPath = loadPath.Substring(resourcesPath.Length);
// 載入此文件下的所有資源
Sprite()sprites = Resources.LoadAll<Sprite>(loadPath);
if (sprites.Length > 0)
{
// 創建導出文件夾
string outPath = Application.dataPath + "/outSprite/" + loadPath;
System.IO.Directory.CreateDirectory(outPath);
foreach (Sprite sprite in sprites)
{
// 創建單獨的紋理
Texture2D tex = new Texture2D((int)sprite.rect.width, (int)sprite.rect.height, sprite.texture.format, false);
tex.SetPixels(sprite.texture.GetPixels((int)sprite.rect.xMin, (int)sprite.rect.yMin,
(int)sprite.rect.width, (int)sprite.rect.height));
tex.Apply();
// 寫入成PNG文件
System.IO.File.WriteAllBytes(outPath + "/" + sprite.name + ".png", tex.EncodeToPNG());
}
Debug.Log("SaveSprite to " + outPath);
}
}
}
Debug.Log("SaveSprite Finished");
}
}
在Unity編輯器將會看到Tools菜單下多了"導出精靈"項,選中圖集,然後點擊"導出精靈"菜單項,即可導出子圖成功。

Ⅲ unity sprite怎麼獲取切割後的圖

假設有一張png/tga圖集,導入到Unity,放置目錄"Assets/Resources/UI"(UI文件夾可替換成其他的,重要的是要在"Assets/Resources/"路徑下),

為了可以使用Unity自帶的精靈切割,要將紋理類型改成"Sprite","Sprite Mode"改成"Multiple","Format"改成"Truecolor",點擊"Apply"按鈕進行應用。
接著,點擊"Sprite Editor"打開精靈編輯器,點擊左上角的"Slice"按鈕,彈出切片設置,再次點擊裡面的"Slice"按鈕,就會自動對圖片進行切割
在對切割不完整的地方進行修正後,點擊右上角的"Apply"按鈕,進行保存。可以看到Project視圖下這個圖集,已經被分割出許多小圖了
接下來,因為要對圖片進行讀寫操作,要更改圖片的屬性才能進行,否則會提示如下:
UnityException: Texture 'testUI' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.
將圖片紋理類型更改為"Advanced",將"Read/Write Enabled"屬性進行打勾,如下圖所示:
創建一個腳本文件,代碼如下:
using UnityEngine;
using UnityEditor;
public class TestSaveSprite
{
(MenuItem("Tools/導出精靈"))
static void SaveSprite()
{
string resourcesPath = "Assets/Resources/";
foreach (Object obj in Selection.objects)
{
string selectionPath = AssetDatabase.GetAssetPath(obj);
// 必須最上級是"Assets/Resources/"
if (selectionPath.StartsWith(resourcesPath))
{
string selectionExt = System.IO.Path.GetExtension(selectionPath);
if (selectionExt.Length == 0)
{
continue;
}
// 從路徑"Assets/Resources/UI/testUI.png"得到路徑"UI/testUI"
string loadPath = selectionPath.Remove(selectionPath.Length - selectionExt.Length);
loadPath = loadPath.Substring(resourcesPath.Length);
// 載入此文件下的所有資源
Sprite()sprites = Resources.LoadAll<Sprite>(loadPath);
if (sprites.Length > 0)
{
// 創建導出文件夾
string outPath = Application.dataPath + "/outSprite/" + loadPath;
System.IO.Directory.CreateDirectory(outPath);
foreach (Sprite sprite in sprites)
{
// 創建單獨的紋理
Texture2D tex = new Texture2D((int)sprite.rect.width, (int)sprite.rect.height, sprite.texture.format, false);
tex.SetPixels(sprite.texture.GetPixels((int)sprite.rect.xMin, (int)sprite.rect.yMin,
(int)sprite.rect.width, (int)sprite.rect.height));
tex.Apply();
// 寫入成PNG文件
System.IO.File.WriteAllBytes(outPath + "/" + sprite.name + ".png", tex.EncodeToPNG());
}
Debug.Log("SaveSprite to " + outPath);
}
}
}
Debug.Log("SaveSprite Finished");
}
}
在Unity編輯器將會看到Tools菜單下多了"導出精靈"項,選中圖集,然後點擊"導出精靈"菜單項,即可導出子圖成功。

Ⅳ unity sprite怎麼獲取切割後的圖

接下來,因為要對圖片進行讀寫操作,要更改圖片的屬性才能進行,否則會提示專如下:
UnityException: Texture 'testUI' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.
將圖片紋屬理類型更改為"Advanced",將"Read/Write Enabled"屬性進行打勾,如下圖所示:
創建一個腳本文件,代碼如下:
using UnityEngine;
using UnityEditor;
public class TestSaveSprite
{
(MenuItem("Tools/導出精靈"))
static void SaveSprite()
{

Ⅳ Unity怎麼在腳本中分割精靈圖集,不是在SpriteEditor里

你可以使用Rigidbody2D來實現 AddForce 然後ForceMode中找到Impulse的枚舉值
你也可以使用CharacterController的來進行,操作但是這個回類並沒有重力答功能,需要你自己實現從起跳到落地時角色運動的軌跡

Ⅵ unity sprite怎麼獲取切割後的圖

假設有一張png/tga圖集,導入到Unity,放置目錄"Assets/Resources/UI"(UI文件夾可替換成其他的,重要的專是要在"Assets/Resources/"路徑下), 為了可以使屬用Unity自帶的精靈切割,要將紋理類型改成"Sprite","Sprite Mode"改成"Multiple"

Ⅶ 想問問,unity17.1里,用sprite editor切割圖時,slice是灰色用不了,怎麼辦啊

你圖片的模式對不對 如果是上面那個的話是九宮格拉伸模式 下面這個才能用來切片

Ⅷ Unity sprite editor 切圖問題

Instantiate就是一個克隆函數
UISprite sp=(UISprite)Instantiate(sprite);就表示克隆一個sprite對象,其類型為UISprite並賦值給sp

Ⅸ Unity 2D 4.5怎麼把分割好的sprite物體播放動畫

播放動畫肯定需要多張圖片,所以你定義sprite必須要定義sprite類型的數組才可以內public sprite[] sprite,這樣在inspector面板中就可以拖上容去多張圖片,然後一張張切換就可以了

Ⅹ 如何給一個Sprite切成9片

學習了一段時間的unity,對裡面的組件有一個大致的了解,但是具體操作來說還不是很熟悉,今天看了一片關於unity sprite怎麼獲取切割後的圖的文章,感覺還不錯。
假設有一張png/tga圖集,導入到Unity,放置目錄"Assets/Resources/UI"(UI文件夾可替換成其他的,重要的是要在"Assets/Resources/"路徑下),

為了可以使用Unity自帶的精靈切割,要將紋理類型改成"Sprite","Sprite Mode"改成"Multiple","Format"改成"Truecolor",點擊"Apply"按鈕進行應用。

接著,點擊"Sprite Editor"打開精靈編輯器,點擊左上角的"Slice"按鈕,彈出切片設置,再次點擊裡面的"Slice"按鈕,就會自動對圖片進行切割,

在對切割不完整的地方進行修正後,點擊右上角的"Apply"按鈕,進行保存。可以看到Project視圖下這個圖集,已經被分割出許多小圖了,

接下來,因為要對圖片進行讀寫操作,要更改圖片的屬性才能進行,否則會提示如下:
UnityException: Texture 'testUI' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.
將圖片紋理類型更改為"Advanced",將"Read/Write Enabled"屬性進行打勾,

熱點內容
線切割怎麼導圖 發布:2021-03-15 14:26:06 瀏覽:709
1台皮秒機器多少錢 發布:2021-03-15 14:25:49 瀏覽:623
焊接法蘭如何根據口徑配螺栓 發布:2021-03-15 14:24:39 瀏覽:883
印章雕刻機小型多少錢 發布:2021-03-15 14:22:33 瀏覽:395
切割機三五零木工貝片多少錢 發布:2021-03-15 14:22:30 瀏覽:432
加工盜磚片什麼櫸好 發布:2021-03-15 14:16:57 瀏覽:320
北洋機器局製造的銀元什麼樣 發布:2021-03-15 14:16:52 瀏覽:662
未來小七機器人怎麼更新 發布:2021-03-15 14:16:33 瀏覽:622
rexroth加工中心亂刀怎麼自動調整 發布:2021-03-15 14:15:05 瀏覽:450
機械鍵盤的鍵帽怎麼選 發布:2021-03-15 14:15:02 瀏覽:506