PIXNET Logo登入

岳 程式與鍵盤間的故事

跳到主文

這是個購買了一個"機械式鍵盤"後,因打字的衝動而產生的程式部落格~

部落格全站分類:不設分類

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 1月 04 週四 201813:31
  • Unity 的 Slider 物件會亂跳的問題

img01.jpg
我的環境配置:Windows 10、Unity 2017.3。
 
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(551)

  • 個人分類:問題排除
▲top
  • 11月 28 週二 201713:38
  • Unity 之 Android 資源讀取不到的問題

image01.jpg
我的環境配置:Windows 10、Unity 5.6.0f3、Java JDK 1.8.0_121、Android Studio 2.2.3。
 
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(952)

  • 個人分類:問題排除
▲top
  • 9月 29 週五 201713:48
  • Unity 如何在點擊推播之後切換場景

image01.jpg
我的環境配置:Windows 10、Unity 5.5.2f1、Java JDK 1.8.0_121、Android Studio 2.2.3。
 
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(1,733)

  • 個人分類:Android
▲top
  • 9月 08 週五 201713:42
  • Unity 出現 Request error (error) 錯誤

image01.png
我的環境配置:Windows 10、Unity 5.6.0f3。
 
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(1,592)

  • 個人分類:問題排除
▲top
  • 8月 31 週四 201713:08
  • Unity 出現 Look rotation viewing vector is zero 訊息

image01.jpg
我的環境配置:Windows 10、Unity 5.6.0f3。
 
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(622)

  • 個人分類:問題排除
▲top
  • 5月 23 週二 201713:47
  • Setting the parent of a transform which resides in a prefab is disabled ... 錯誤排除

image01.jpg
我的環境配置:Windows 10、Unity 5.6.0f3。
 
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(526)

  • 個人分類:問題排除
▲top
  • 4月 21 週五 201711:38
  • Default clip could not be found in attached animations list.

image01.jpg
我的環境配置:Windows 10、Unity 5.5.2f1。
 
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(768)

  • 個人分類:問題排除
▲top
  • 12月 06 週二 201615:21
  • 使用關鍵字 params 接收可變數目引數的方法參數

相信大家在撰寫腳本的時候,一定有遇過某個 方法(Methods) 需要接收大量或者數量不確定的 方法參數(Method Parameters) 時,這個時候你除了使用 成員多載(Member Overloading) 之外,其實你還可以使用關鍵字 params 來接收數量不固定的 方法參數(Method Parameters)!
 
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(4,918)

  • 個人分類:程式基礎與小技巧
▲top
  • 12月 05 週一 201618:29
  • 如何在 Unity 運作中時使用 Apply Prefab 以及如何使用腳本一次 Replace 多個 Prefab

image01.jpg

我的環境配置:Windows 10、Unity 5.3.4f1。
 
 
在 Unity 中,可以將場景中的 GameObejct 製作成 Prefab,以便之後使用。
 
若有在 GameObject 中進行修改的話,也可以按下 Apply 按鈕,將修改過後的 GameObject 覆蓋掉舊的 Prefab
 
 
但在 Unity 運作中時,想要針對調整好數值的 GameObject 執行 Apply Prefab 時,應該怎麼做呢?因為 Apply 按鈕消失了。
 
這邊可以使用 GameObject > Apply Changes To Prefab
 
 
或者也可以自行撰寫腳本,來執行 Replace Prefab,自行撰寫腳本有個好處,就是可以同時 Replace 多份 Prefab,但這也是有缺點的,所以必須小心使用!
 
以下為 Replace Prefab 的腳本,該腳本可以選取多個 GameObject 同時進行 Replace 的動作
 
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
/// <summary>
/// 該工具是用來協助 Replace Prefab 的,
/// 因為該工具引用到 UnityEditor,
/// 所以必須存放在 Editor 資料夾內.
/// </summary>
public class AutoReplacePrefab
{
[MenuItem( "MyTools/ReplacePrefab/ConnectToPrefab" )]
private static void ReplacePrefab_ConnectToPrefab()
{
// 該陣列是存放已經執行過 Replace 的 GameObject,
// 目的是避免同一個的 GameObject 執行了多次 Replace,
// 造成系統資源的浪費.
List<GameObject> listGameObject = new List<GameObject>();
// 開始執行 Replace, 這邊程式也會自動判斷是否重複 Replace 同一個物件,
// 是的話則會跳開, 避免資源浪費.
for ( int i = 0; i < Selection.objects.Length; i++ )
{
// 找 GameObject 最在場景中的源頭父層,
// 這邊其實也可以使用 PrefabUtility.FindPrefabRoot 去得取物件的源頭,
// 但 PrefabUtility.FindPrefabRoot 有時候會因為物件與父層的連結斷開,
// 導致搜尋結果是錯誤的, 所以這邊我們自己手動搜尋.
GameObject gobjRoot = Selection.objects[i] as GameObject;
while ( true )
{
GameObject gobj = PrefabUtility.GetPrefabParent( gobjRoot ) as GameObject;
if ( gobj != null && gobj == PrefabUtility.FindPrefabRoot(gobj) )
break;
if ( gobjRoot.transform.parent == null )
break;
gobjRoot = gobjRoot.transform.parent.gameObject;
}
// 檢查該 GameObject 是否存在紀錄中, 若回傳值不為 -1,
// 則表示該 GameObject 已經執行過 Replace 了,
// 所以跳過該次迴圈, 不重複 Replace.
if ( listGameObject.FindIndex(d=>d.GetHashCode() == gobjRoot.GetHashCode()) != -1 )
continue;
// 若該物件無 Prefab 或者 Prefab Root 不正確的話,
// 也跳出迴圈, 不繼續執行.
GameObject target = PrefabUtility.GetPrefabParent( gobjRoot ) as GameObject;
if ( target == null || (target != PrefabUtility.FindPrefabRoot(target)) )
continue;
// 紀錄已經執行過 Replace 的 GameObjec
listGameObject.Add( gobjRoot );
// 開始覆蓋 Prefab
PrefabUtility.ReplacePrefab( gobjRoot, target, ReplacePrefabOptions.ConnectToPrefab );
// 以下 Log 是可以關閉的
Debug.Log( string.Format( "{0} 使用 {1} 的方式覆寫了 {2}", gobjRoot.name, ReplacePrefabOptions.ConnectToPrefab.ToString(), target.name ) );
Debug.Log( string.Format( "GameObject {0} 位置", gobjRoot.name ), gobjRoot );
Debug.Log( string.Format( "Prefab {0} 位置", target.name ), target );
Debug.Log( "" );
}
}
}
 

 
ReplacePrefabOptions 參數說明

ReplacePrefabOptions.Default:意思等同於 ReplacePrefabOptions.ReplaceNameBased。


ReplacePrefabOptions.ReplaceNameBased:意思為,將 GameObject 有修改的部分,直接在指定的 Prefab 裡面執行添加或移除,因為是使用直接添加或移除的方式,所以 GameObject 粗體字的數值部分不受 Prefab 影響。


ReplacePrefabOptions.ConnectToPrefab:意思等同於 Unity 的 Apply 按鈕,一樣是將 GameObject 與 Prefab 做同步,因為是使用同步的方式,所以 GameObject 的數值就會受 Prefab 影響了,大家會發現粗體字的數值部分都沒了。


 
PS:GameObject 的數值是否會受 Prefab 影響,這邊可以藉由該數值是否為粗體字來得知。詳細介紹可觀看 "GameObject 與 Prefab 的關聯性"。
PS:因為 Default 與 ReplaceNameBased 的用法較為特殊,所以這邊建議使用 ConnectToPrefab 即可。
PS:因為該工具引用到 UnityEditor,所以必須存放在 Editor 資料夾內。
PS:以上為我的測試結果,如有錯誤歡迎指正,謝謝。
 
 
下面有提供更完整的 AutoReplacePrefab.cs 腳本下載,下載腳本後,放在 Editor 資料夾內即可使用,若無該資料夾,可以直接建立一個
 
 
使用方法為,直接選取需要 Replace 的 GameObject
 
 
接著執行 MyTools > Replace > ConnectToPrefab 或任一選項即可
 
 
這邊需要注意!不可以將需要 Replace 的 GameObject 放在另一個需要 Replace 的 GameObject 底下!
以下是錯誤的!因為 GO_1、GO_2、GO_3 都是擁有各自的 Prefab,若是這樣選取並 Replace 的話,會造成不可預期的錯誤!
上面圖片可以看到,我把 GO_3 掛到 GO_2 底下,再把 GO_2 掛到 GO_1 底下,接著我全選了所有物件,執行 Replace。但系統卻是先執行 GO_2 的 Replace。之後才執行 GO_1,這導致 GO_2 的 Prefab 被修改了!
 
所以說,若真有這需求的話,請直接點選 GO1 執行 Replace 就好,避免出現非預期的情況發生。
 
我想 Unity 官方沒有提供多個 GameObject 同時 Replace 的功能,應該也是基於這個原因吧?!
 
 
腳本下載:https://drive.google.com/file/d/0B0QPre3qvuw-Z1Bmd1J2dnBXeTQ/view?usp=sharing
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(1,437)

  • 個人分類:其它
▲top
  • 11月 23 週三 201615:47
  • Unity 如何去設定行動裝置的畫面翻轉

image01.jpg
我的環境配置:Windows 10、Unity 5.3.4f1。
 
(繼續閱讀...)
文章標籤

岳 發表在 痞客邦 留言(0) 人氣(8,271)

  • 個人分類:其它
▲top
«123...9»

文章搜尋

文章分類

toggle 虛擬幣 (1)
  • 虛擬幣平台 (5)
toggle 外匯 (1)
  • JCI (0)
toggle Nintendo Switch (1)
  • Nintendo Switch (1)
toggle Unity (6)
  • 問題排除 (19)
  • 其它 (22)
  • iOS (2)
  • 屬性(Attribute) (1)
  • Android (12)
  • UGUI (6)
toggle C# (3)
  • 程式碼風格 (4)
  • 其它 (1)
  • 程式基礎與小技巧 (10)
toggle MySQL (1)
  • 語法 (4)
  • 未分類文章 (1)

熱門文章

  • (62,069)列舉 (enum)
  • (38,850)Unity 導出 Android APK 檔
  • (17,874)Android Studio 匯出 JAR 檔
  • (14,252)Unity UGUI 文字 (Text) - 語法
  • (12,739)MySQL 取資料不重複
  • (8,342)Android Studio 匯出 JAR 檔 - 加入 Unity classes.jar
  • (5,013)長整數 (long)
  • (3,520)MySQL 更改欄位字串為大小寫
  • (1,522)浮點數 (double)
  • (1,265)行動裝置的狀態列 (StatusBar)

最新文章

  • 探索美食之旅-九爺阿擼霸串串香火鍋的美味體驗
  • 達觀寒舍
  • 台灣 ACE 王牌數位貨幣交易所
  • DarbFinance 歐洲虛擬幣交易所 - 註冊教學
  • 簡單且免費的挖礦工具 CryptoTab
  • YoBit 俄羅斯虛擬幣交易所 - 註冊教學
  • 台灣的虛擬幣交易所 MAX
  • Nintendo Switch EDEV 各按鈕對應的 KeyCode
  • 如何在 Unity 的 Android 推播中加入震動、音效、閃光等效果
  • Unity 的 Slider 物件會亂跳的問題

最新留言

  • [25/04/28] 蘋果用蘋果 於文章「Nintendo Switch EDEV...」留言:
    這份對應表很實用,方便開發者使用搖桿! 我是部落格流量商 ...
  • [22/04/25] 訪客 於文章「浮點數 (float)...」留言:
    原本在搜尋引擎找出一堆 Blog 文章,不知哪幾篇值得花時間...
  • [21/11/25] 訪客 於文章「簡單且免費的挖礦工具 CryptoTab...」留言:
    https://cryptotabbrowser.com/3...
  • [20/11/03] 張紫婕 於文章「CoinDeal 歐洲虛擬幣交易所 - ...」發表了一則私密留言
  • [20/09/25] LEON 於文章「Unity 導出 Android APK...」留言:
    請問這個可以改APK的名稱嗎?謝謝!...
  • [20/08/10] 訪客 於文章「Unity 取得亂數的函數...」留言:
    不能將bool隱式轉換成int ...
  • [20/05/25] 訪客 於文章「在 Unity 中調用 Android ...」留言:
    你好 我想請問一下 我在輸出APK的時候 失敗 E...
  • [20/05/11] 訪客 於文章「在 Unity 中調用 Android ...」留言:
    可以請問這是什麼意思嗎qq App Error: FATA...
  • [20/04/24] 張咻滑 於文章「簡單且免費的挖礦工具 CryptoTab...」留言:
    用Crypto Tab瀏覽器直接跑比Google瀏覽器裝插件...
  • [20/04/19] 訪客 於文章「Unity 導出 Android APK...」留言:
    非常感謝您,非常有用!!!...

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣: