2016年6月29日 星期三

IOS Build issues

因手上剛好有Mac電腦,就順便幫老師們Build Ios並且做了發佈上架的事情

有些Project很順利的就讓蘋果公司去做審查了
但是有些卻光是在實機測試就好掉了好幾天
避免以後光是在尋找答案又花了很多時間
所以在此做個紀錄

以下列出比較常見的幾項問題

1. ld: library not found for "XXX"




很常遇到以上的問題,就是 " 遺失了什麼路徑 "
不過我遇到的不同遺失的路徑,有著不一樣的解法



1 )  -lVuforia 

這個似乎是在說找不到lVuforia 檔案,來到Build Phases > Link Binary With Libraries 查看確實存在




因此網路上找到的方法就是 " 把它移除再找到路徑加入一次 "
那要怎麼在加入一次呢?就是點擊 Link Binary With Libraries 下方的 + 號,然後點擊Add Other




路徑查找的方式就在資料夾內按Ctrl+F去尋找遺失的檔案
此專案是使用高通(Vuforai)來製作AR的App
網路上找到的解法就是再重新將 libVuforai.a 這個檔案重新加入






2 )  Bitcode

最主要的原因就是因為Unity還未支援Bitcode這個功能,因此在Build Ios如果沒有關閉Bitcode就會出錯



如何將Bitcode關閉呢?
Build Setting > Build Options > Enable Bitcode 變成 No




3 )  -libiPhone-lib

這個檔案也在 Build Phases > Link Binary With Libraries 確實看得到,但是也不清為什麼搜尋不到
不過這次的解決方式比較不同是找到 Build Setting > Library Search Paths
加上  $(SRCROOT)/Libraries  這個問題似乎就解決了


附上參考文章連結
http://answers.unity3d.com/questions/538363/error-when-i-updated-to-xcode-5-to-get-import-to-i.html




以上是我目前遇到尋找比較久才得到的解答
不過網上也有很多地方可以發問以及搜尋
在此先附上幾個比較有名的論壇可以先去搜尋問題

Unity Answers   Unity官方的問題討論區

Stackoverflow  很多與程式語言相關的問題在這提問或找到解答

Vuforia  這個是高通官方的 Q&A 相關討論區

2016年6月28日 星期二

初階演算法 - 氣泡排序法

在排序數字大小的時候,有許多種演算法來幫助排序
今日又因為很巧的機緣老師不小出了這個排序法來排列
讓我又複習了一下

以下是使用氣泡排序法的方式來做數字大小的排序

(一)將要比較的數字,放入陣列(Array)當中







接下來,氣泡排序法的原理就是先從陣列[0]開始向後面的陣列[1]、陣列[2]、陣列[3]、........
不斷地做比較,如果數字本身比較的時候,就交換位置



於是在第一輪比較完之後,得到另一個新的陣列
而且此時陣列0的排序已經排序完成了,接下來就換陣列[1]
此時的陣列[1]比陣列[2]大,所以交換位置



所以就得到下面的結果,但是並非交換就結束了,還要繼續和下面的數字比較
交換之後陣列[1]等於30,與陣列 [3] 28 比較又比較大,所以交換
















得到下面的結果


然後在與陣列[4]比較
















因為數值又比陣列[4]大,所以交換
















然後在與陣列[5]比較
















因為數值又比陣列[5]大,所以交換



然後在與陣列[6]比較,但是此時的陣列[1]沒有比陣列[6]大,所以不用交換
得到第二次排序的結果




所以當每個數字都照這樣輪過一次,就可以排列出數字的大小了

2015年10月30日 星期五

C# 無聊丟骰子遊戲(題目三)

老師在期中考的時候,因為是程式設計課程
所以拿了題目來練習


========================        以下是題目        ======================

一個無聊的丟骰子遊戲:三個人輪流丟骰子,每次丟完就把自己的點數記錄下來
並且之前丟的點數加總,最後點數超過200的人就取得勝利,並且遊戲結束



問題一
請直接跟改加入程式碼直接丟4顆骰子,每一個人只丟次,點數最高的人獲勝
用print()來顯示是哪一位玩家獲勝。
提示:第一位骰子點數可以放在play_a1、play_a2、play_a3、play_a4


========================        以下是我的解答        ======================
題目說直接取最高分數的人獲勝
但是沒有規定人相等或者是人相等的情況
因此在做判斷的時候直接去除 兩人相等三人相等 的情況
假設只有一人獲勝的情況下

程式碼直接放到Unity的Start下可以直接看結果。

2015年10月10日 星期六

Unity C# ArrayList Tutorial

首先說明一下ArrayList與數組的區別:
(1)ArrayList的容量可以根據需要自由擴充,數組的容量是固定的
(2)ArrayList只能是一維形式,數組可以是多維的
(3)ArrayList提供將 ​​只讀和固定大小包裝返回到集合的方法,數組不提供
(4)ArrayList提供添加、插入和刪除某一範圍元素的方法,數組中只能一次獲取或設置一個元素的值

ArrayList:

一、使用時添加引用

using System.Collections;



二、初始化

 ArrayList List = new ArrayList();
 ArrayList List = new ArrayList(數組名);//初始化是把一個數組的所有元素添加進來


























三、遍歷


  三種遍歷方式
  (1)for循環,最常用(遍歷過程可以更改)
       String abc="";
       for (int i = 0; i < List.Count; i++)
       {
          abc += "," + List[i].ToString();
       }
  (2)foreach循環,(如果是數组,使用foreach只能做查詢,因為foreach遍歷是副本)
       String abc="";
       foreach (object n in List)
       {
           abc += "," + n.ToString();
       }
  (3)這個方式是上網找的
       String abc="";
       IEnumerator ie=al.GetEnumerator();
       while(ie.MoveNext())
       {
            abc += "," +ie.Curret.ToString();
       }



四、查詢

(1)Bool型,返回值為True 、False
List.Contains(元素); // 查詢是否在ArraryList裡面存在元素















(2)int 型,為索引
1. 第一次匹配的索引

List.IndexOf(元素);










List.IndexOf(元素,開始位置的索引);










List.IndexOf(元素,開始位置的索引,往後查找多少元素為止);

















2. 最後一次所匹配的索引(此索引為逆序)     
等同最後一次匹配的索引後面元素的個數,同 IndexOf 類似


List.LastIndexOf(元素);







、插入


(1)Add   只能插入到末尾

     List.Add("元素或數組名");

(2)Insert 可以是任意位置

     List.Insert(索引,元素);

     List.InsertRange(索引,數组名);









六、删除


(1)删除所有
     List.Clear();

(2)删除某一个元素
     List.Remove(元素);

     List.RemoveAt(元素的索引);    // 指定刪除哪一格的元素

(3)删除某一範圍的元素
     List.RemoveRange(索引,個數);
     // 從索引的那格開始(含索引本身),往後刪除多少個元素