今天在整理專案的時候,無意間看見有一個案子使用了xxx.bundle 的方式,來放專案中用到的圖片檔,由於平常都習慣直接放直接用,倒是第一次看到這種用法。
所以就學習了一下如何建立這個檔案

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

2015最夯的題材應該就是物聯網的題材吧
其實物聯網不算是新的議題

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

剛好遇到有客戶 對應的版本是從 iOS7 開始 但是AlertView 的用法真的是天差地遠啊
if #available(iOS 8.0, *)
{//版本是iOS 8.0 以上
let alertController = UIAlertController(title: "", message: "", preferredStyle: .Alert)

let sendAction = UIAlertAction(title: "OK", style: .Default)
{ (_) in
// 這個按鈕按下去要做的事情
}

let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel)
{ (_) in
// 這個按鈕按下去要做的事情
}

alertController.addTextFieldWithConfigurationHandler
{ (textField) in
//增加一個文字輸入框
textField.text = ""//設定輸入框的內容
}

alertController.addAction(cancelAction)//加按鈕
alertController.addAction(sendAction)//加按鈕
self.presentViewController(alertController, animated: true, completion: nil)

}
else
{//版本是iOS7

let alertView = UIAlertView(title: "", message: "", delegate: self, cancelButtonTitle: "OK", otherButtonTitles: "Cancel")
//記得增加 UIAlertViewDelegate 在class 上面
//按鈕按下去的處理就要由 下面這個func 處理
//func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int)
alertView.alertViewStyle = UIAlertViewStyle.PlainTextInput
alertView.tag = self.renamealert
self.renameAlertTextInput = alertView.textFieldAtIndex(0)
self.renameAlertTextInput.text = ""
alertView.show()

}

}
}

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

到專案設定的build settings 
搜尋關鍵字: bitcode
然後把下面的bool 改成 NO
就可以編譯過關了

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

請直接複製貼上享用 使用的是swift 語法 有objc需求請自己轉objc 或等我更新
 
func currentWifiSSID() -> String {

var ssid: String = "";
if let interfaces = CNCopySupportedInterfaces() {
let interfacesArray = interfaces.takeRetainedValue() as! [String]
if (interfacesArray.count > 0) {

let ifname = interfacesArray[0];
let ifdata = CNCopyCurrentNetworkInfo(ifname);
println("ifdata \(ifdata)")
//println(ifdata)
if(ifdata != nil)
{
let interfaceData: Dictionary = ifdata.takeRetainedValue() as Dictionary
println("interfaceData \(interfaceData)")
ssid = interfaceData["SSID"] as! String
}
}
}

return ssid;
}

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

最近用的專案有使用到  特此分享出來
因為apple 實在是把wifi 的權限搞得太死了
搜尋網路很久很久才找到了這個方法
主要是透過Apple的open source code: https://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/net/route.h

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

pickerViewSample1
 簡單做了一個swift 使用pickerView功能的範例
必須具備知識
1. storyboard 跟程式碼的連結
2. xib的簡單應用 並實例化

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

C#註解
其實沒甚麼好解釋的,正如下圖所顯示那樣子去寫吧
這樣別人在使用你寫的功能的時候
可以很清楚他到底是要幹嘛用的
 

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

UITexture
UITexture.cs  當中都有英文說明(基於商業版權問題  就不貼上原碼了)
如果你沒有或不希望創建一個atlas,你可以簡單地使用這個腳本來繪製紋理。
但請記住,這將增加目前額外的draw call,所以最好只使用它的背景或臨時可見的部件。
 

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

射死你1
經過前五節簡單介紹後今天就來利用這些東西寫個小遊戲吧
1 首先我們場景上先佈置出如下圖的布局
 
 

cwa1022 發表在 痞客邦 留言(3) 人氣()

製作字體1
利用BMFont製作字體檔的方法
下載 bmfont 這個免費的軟體,並安裝。https://www.angelcode.com/products/bmfont/
用途:當妳覺得使用動態字體在應用程式中是很大的負擔時候就是她出現的時機了

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

using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
/*
* 這只是打包assetBunldes的編輯項目
* androidr使用就要使用forAndroid結尾的項目打包
* 電腦上要使用的則不用
* IOS目前無需求
* 以下是全打包及單一打包差別
* BuildPipeline.BuildAssetBundle (obj, null, targetPath, BuildAssetBundleOptions.CollectDependencies,BuildTarget.Android)
* BuildPipeline.BuildAssetBundle (null, SelectedAsset, Path, BuildAssetBundleOptions.CollectDependencies,BuildTarget.Android)
* */
public class CreateAssetBunldes : MonoBehaviour
{
[MenuItem("yuchiHelper/CreateAssetBunldesMain")]
static void CreateAssetBunldesMain ()
{
//取得在Project中選擇的所有對象
Object[] SelectedAsset = Selection.GetFiltered (typeof(Object), SelectionMode.DeepAssets);
//遍歷這個選擇到的對象
foreach (Object obj in SelectedAsset)
{
string sourcePath = AssetDatabase.GetAssetPath (obj);
//将Assetbundle放在AssetBundles文件夹下,如果没有就創建一個
//AssetBundles是只是路徑
//網路下载:就不需要放在這裡。
string Path = Application.dataPath + "/AssetBundles/" + obj.name + ".assetbundle";
if (BuildPipeline.BuildAssetBundle (obj, null, Path, BuildAssetBundleOptions.CollectDependencies))
{
Debug.Log(obj.name +"打包成功");
}
else
{
Debug.Log(obj.name +"打包失敗");
}
}
//刷新
AssetDatabase.Refresh ();
}
[MenuItem("yuchiHelper/CreateAssetBunldesMainForAndroid")]
static void CreateAssetBunldesMainForAndroid ()
{
Object[] SelectedAsset = Selection.GetFiltered (typeof(Object), SelectionMode.DeepAssets);
foreach (Object obj in SelectedAsset)
{
string sourcePath = AssetDatabase.GetAssetPath (obj);
string Path = Application.dataPath + "/AssetBundles/" + obj.name + ".assetbundle";
if (BuildPipeline.BuildAssetBundle (obj, null, Path, BuildAssetBundleOptions.CollectDependencies,BuildTarget.Android))
{
Debug.Log(obj.name +"打包成功");
}
else
{
Debug.Log(obj.name +"打包失敗");
}
}
AssetDatabase.Refresh ();
}
[MenuItem("yuchiHelper/CreateAssetBunldesALLForAndroid")]
static void CreateAssetBunldesALLForAndroid ()
{
Caching.CleanCache ();

string Path = Application.dataPath + "/AssetBundles/ALL.assetbundle";

Object[] SelectedAsset = Selection.GetFiltered (typeof(Object), SelectionMode.DeepAssets);

foreach (Object obj in SelectedAsset)
{
Debug.Log ("Create AssetBunldes name :" + obj);
}

//跟單獨打包最大的差異就在參數二
if (BuildPipeline.BuildAssetBundle (null, SelectedAsset, Path, BuildAssetBundleOptions.CollectDependencies,BuildTarget.Android))
{
Debug.Log("Success!!! for android");
AssetDatabase.Refresh ();
}
else
{
Debug.Log("false!!!!!");
}
}
[MenuItem("yuchiHelper/CreateAssetBunldesALL")]
static void CreateAssetBunldesALL ()
{
Caching.CleanCache ();
string Path = Application.dataPath + "/AssetBundles/ALL.assetbundle";
Object[] SelectedAsset = Selection.GetFiltered (typeof(Object), SelectionMode.DeepAssets);
foreach (Object obj in SelectedAsset)
{
Debug.Log ("Create AssetBunldes name :" + obj);
}
if (BuildPipeline.BuildAssetBundle (null, SelectedAsset, Path, BuildAssetBundleOptions.CollectDependencies))
{
Debug.Log("Success!!!");
AssetDatabase.Refresh ();
}
else
{
Debug.Log("false!!!!!");
}
}
}

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

1 2
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。