Unity檔案備份的方式:Asset Export

備份是相當重要但有經常忘記的事情 最好是用版本控管軟體(如Perforce)備份 不過Unity在資料備份上提供了以Assets Export的方式做備份 讓我們可以輕易的轉換於不同開發環境(PC<>Mac)或傳遞資料給別人 一般備份方式 不外乎整個Copy下來 但Unity不但提供了更充明的方式 並且保留的物件之間彼此的連結關係(dependency)

現在就來說明ㄧ下步驟

輸出要備份的場景(Scene) >Assets >Export Package

在Project面板下點將你要輸出的場景檔全部選起來

*注意:如果沒點選任何物件的情形下 會將所有在Project面板下的物件都輸出 (可以藉由此方式將專案整理乾淨)


 

然後會跳出Assets List視窗

Include dependencies必需打勾(預設)

 

開新專案 輸入已備份的Assets Package

輸入完成後 你會看到資料(包含正確的物件連結)就如同之前所使用的一樣

Unity:Play, Pause and Stop Audio(C#)

 

主要會用到的code:

  • audio.PlayOneShot(myAuioClip); //用來播放聲音
  • AudioListener.pause=true; //播放後用來暫停聲音;  //注意:此處使用AudioListener 並且用true or false控制 (我試過用audio.Pause()控制 但沒作用 可能是我用法錯誤)
  • audio.stop();  //播放後停止聲音

以下用範例說明按下按鈕播放聲音,暫停聲音/停止聲音

*使用時此script是attach在Camera下面

*並且需要在場景中建立個名為”Button_BackMain”的物件(cube也可以 記得要有collider)

Unity Raycast 沒有反應!?附贈Mouse Raycast與iOS/Android Raycast

通常是因為Collider的問題

在目標物件必需要有collider  不需Trigger 不需加Rigidbody

如果script中同時有Mouse的Raycast和input touch的Raycast 可能會造成在iOS Device(如iPad)中Raycast無法正常作用

C#程式碼如下:

將以下script加在Camera下面

void Update ()
{
//在PC/Mac用滑鼠點擊測試
if(Input.GetMouseButtonDown(0))
{
ray = camera.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
//依物件名稱作不同的點擊判定
if(hit.collider.name ==”Level”) LoadLV1();
if(hit.collider.name ==”ReadMe”) LoadReadMe();
}
}
}

void Update ()
{
//Raycast on iOS/Android
for (i=0; i {
if (Input.GetTouch(i).phase == TouchPhase.Began)
{
ray = camera.ScreenPointToRay (Input.GetTouch(i).position);
if (Physics.Raycast(ray, out hit))
{
//依物件名稱作不同的點擊判定
if(hit.collider.name ==”Level”) LoadLV1();
if(hit.collider.name ==”ReadMe”) LoadReadMe();
}
}
}
}

Unity到Kindle Fire實機測試時icon模糊問題解決方式

剛拿到Kindle Fire時 馬上很興奮將app放上去試試 先是遇到Android Device Not Found的問題 解決了之後 卻又看到在Kindle Fire上icon糊的不像話 但別人在架上的app都不會 如下圖

後來才知道 原來Kindle Fire的icon是在Amazon Developer Portal上傳apk檔時 會有一個地方一併要另外上傳icon圖片 這個才會是到時真正上架後會用的icon圖

順便說一下 icon圖的格式為PNG-24 或PNG-32 如果用Photoshop要用save for web的方式存檔: >Photoshop >File >Save for Web… >然後選PNG選項

不然save as成一般的PNG會被拒絕

使用連續圖檔並長時間播放之後產生貼圖模糊格狀問題

1.模糊問題主要是貼圖設定問題:
產生MipMap取消
Aniso Level越高越不會糊
但要注意效能問題”
2.格狀問題(Pixelated)主要是貼圖格式
目前已知4×4沒問題
邊長為2的n次方”
不同的code可能會有不同情形
c# code參考:
using UnityEngine;
using System.Collections;

public class AnimatedTexture : MonoBehaviour
{

private float iX=0;
private float iY=1;
public int xCount = 1;
public int yCount = 1;
public int fps=3;
private Vector2 size;
private Renderer myRenderer;
private int lastIndex = -1;

void Start ()
{

size = new Vector2 (1.0f / xCount ,1.0f / yCount);

myRenderer = renderer;

if(myRenderer == null) enabled = false;

myRenderer.material.SetTextureScale (“_MainTex”, size);
}

void Update()
{

int index = (int)(Time.timeSinceLevelLoad * fps) % (xCount * yCount);
if(index != lastIndex)
{
Vector2 offset = new Vector2(iX*size.x,1-(size.y*iY));
iX++;
if(iX / xCount == 1)
{
iY++;
iX=0;
if(iY / yCount== 1)
{
iY=0;
}
}

myRenderer.material.SetTextureOffset (“_MainTex”, offset);

lastIndex = index;
}

}

}