2015年10月28日 星期三

使用visual studio code 當 Unity3d的編輯器

小而精美的visual studio來了, 他的名字叫Code
他免費, 雖然 vs 2015  community也是免費, 但是安裝下來要好幾G
Code可以幫你省下很多空間

安裝方法
1.首先還是先安裝或更新mono
2.下載安裝vs code
3.用unity3d開啟你的專案
4.上asset store 搜尋 vs code, 下載外掛
5.打開unity的Preferences, 你會發現側邊欄多了 VSCode



重點     
a.Enable Integration 打開後就能使用VSCode當編輯器了
b.Always Write Lunch File 代表.txt或.json也用VSCode編輯
c.按鈕Write Workspace Settings點一下,他會幫你生成VSCode過濾非必要檔案的設定, 如*.meta

好處
1.IDE檔案小
2.使用你習慣的visual studio熱鍵
3.附加超好用的sublime text熱鍵
4.不需要回unity就知道程式碼key錯了
5.mac上可以用
6.打開你下載的VSCode外掛, 看一下是怎麼寫的,提升你的unity editor知識

缺點
1.debug目前只有mac能用

2015年9月3日 星期四

關掉unity3d Debug.Log

Debug.Log 可以讓unity3d顯示我們所需的log
但是如果過多的Log,會導致unity3d效能降低
這時候通常會使用Define的方式來避掉
例如
#if Debug
    Debug.Log("error");
#endif

但是每次寫個log都要這樣寫也太麻煩了
所以會寫一個類別來管理, 就不直接使用unity提供的Debug了
例如
public class MyDebug {
    public static void Log(string message) {
#if Debug
    Debug.Log(message);
#endif
    }
}

這樣雖然解決了麻煩, 但是有另一個麻煩出現了
當我們想要看log是哪一行程式碼時, 會點兩下console
這時候就會跳到該類別裡面, 變成需要看stack去回推到想要的程式碼

但是只要加入以下的Debug.cs之後, 一切問題都解決了
#if RELEASE

using System.Diagnostics;
using UnityEngine;

public static class Debug
{
     [Conditional("RELEASE")] public static void Break(){}
     [Conditional("RELEASE")] public static void ClearDeveloperConsole(){}
     [Conditional("RELEASE")] public static void DebugBreak(){}
     [Conditional("RELEASE")] public static void DrawLine(Vector3 start, Vector3 end){}
     [Conditional("RELEASE")] public static void DrawLine(Vector3 start, Vector3 end, Color color){}
     [Conditional("RELEASE")] public static void DrawLine(Vector3 start, Vector3 end, Color color, float duration){}
     [Conditional("RELEASE")] public static void DrawLine(Vector3 start, Vector3 end, Color color, float duration, bool depthTest){}
     [Conditional("RELEASE")] public static void DrawRay(Vector3 start, Vector3 dir){}
     [Conditional("RELEASE")] public static void DrawRay(Vector3 start, Vector3 dir, Color color){}
     [Conditional("RELEASE")] public static void DrawRay(Vector3 start, Vector3 dir, Color color, float duration){}
     [Conditional("RELEASE")] public static void DrawRay(Vector3 start, Vector3 dir, Color color, float duration, bool depthTest){}

     [Conditional("RELEASE")] public static void Log(object message){}
     [Conditional("RELEASE")] public static void Log(object message, UnityEngine.Object context){}
     [Conditional("RELEASE")] public static void LogError(object message){}
     [Conditional("RELEASE")] public static void LogError(object message, UnityEngine.Object context){}
     [Conditional("RELEASE")] public static void LogException(System.Exception exception){}
     [Conditional("RELEASE")] public static void LogException(System.Exception exception, UnityEngine.Object context){}
     [Conditional("RELEASE")] public static void LogWarning(object message){}
     [Conditional("RELEASE")] public static void LogWarning(object message, UnityEngine.Object context){}
}
#endif

這樣只要在遊戲要發佈時加上RELEASE define後
所有log就會消失了, 點兩下log也成正確的跳到該行程式碼

關鍵就在於Conditional這個attribute
身為程式設計師,  你一定可以根據這份程式碼的邏輯以及這個attribute的作用
去發揮更多的功能出來, 去查查看吧

2015年8月3日 星期一

Android library Timber

Timber是一個方便寫  Android log的library
原始的android log寫法為
Log.d(TAG, "i am log");
TAG可以方便的查詢我要的LOG
但是每次都要打上去很麻煩, 甚至會同一個類別上的log打錯字而找不到的問題
所以開始有人在類別一開始先寫上靜態的STRING用來當TAG用,像下面這樣
private static final String TAG = "XXXFragment";
另外一個問題是(可能不是問題而是我不知道怎麼辦)
當APP要上線時, 想要把log全部關掉的話
似乎就變得非常麻煩

Timber就是幫我們處咧這些問題
首先先請gradle幫我們下載Timber
compile 'com.jakewharton.timber:timber:3.1.0'

然後在Appcation的衍生類別的onCreate()加上
Timber.plant(new Timber.DebugTree());
之後就可以直接在你想要的類別
log時改用
Timber.d("i am log");
TAG就會使用該類別的名稱代替了


2015年8月2日 星期日

android studio 上設定 smack

smack 是 即時通訊 IM的 java client端 library
當然可以使用在android上
去smack官方網站會要使用者下載jar檔來使用

而現在google就講了,會主推android studio
所以在android上使用gradle管理library才是比較好的方法
當然預設也是會先讀libs資料夾下的jar使用, 要直接擺進去也可以

目前使用的server端是ejabberd
在Linux上面幾行指令就能安裝好, 是相當不錯的server端

使用gradle管理smack主要有以下
    compile 'org.igniterealtime.smack:smack-android-extensions:4.1.0-rc1'
    compile 'org.igniterealtime.smack:smack-tcp:4.1.0-rc1'
    compile 'org.igniterealtime.smack:smack-android:4.1.0-rc1'

2015年7月20日 星期一

Android上使用lambda運算式

lambda運算式是java 8的新功能
但是android只用到java 7
但是也不是不能使用需要使用以下外掛
https://github.com/orfjackal/retrolambda
因為是使用android studio所以需要gradle來管理
https://github.com/evant/gradle-retrolambda

這邊主要是講android studio上的設定方式
1.安裝java 8
2.設定build.gradle
專案根目錄的build.gradle
加入粗體文字內容
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'        classpath 'me.tatarka:gradle-retrolambda:3.2.0'    }
}
需要使用lambda的module的build.gradle
加入粗體文字內容
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

android {
    compileSdkVersion 22    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId "package.name"        minSdkVersion 14        targetSdkVersion 21        // Enabling multidex support.        multiDexEnabled true    }

    buildTypes {
        release {
            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

阿福Alfred

mac的快速啟動工具

免費版
可以快速啟動關閉任何app
開啟資料夾
重新啟動機器, 關機, 睡眠等

購買powerpack可以獲得workflows的功能
可定義常用的操作流程, 供阿福除了上面提到的功能外的一些其他命令
以及直接下指令不用開啟treminal等等功能

http://www.alfredapp.com/


Sublime Text 使用

Sublime Text怎么用?还在找Sublime Text教程?这是最全指南,超级代码编辑神


unity3d 使用sublime text 當編輯器

1.安裝mono
2.安裝sublime text 3
3.打開sublime text 3 安裝package control
4.使用package control 安裝 OmniSharp,重新啟動sublime text
5.開啟unity 開啟專案,專案目錄下新增Editor資料夾
6.下載程式碼放進去Editor資料夾
7.點擊Assets/Sync SublimeText Project(程式碼提供的功能)
8.使用sublime text開啟產生的專案檔(在unity專案目錄下)
9.開始使用sublime text寫程式碼

因為OmniSharp的關係,程式碼寫完存檔就會顯示錯誤或警告
因此不需要回到unity上面在編譯才知道錯誤
另外也有Intellisense可以使用
只是警告項目實在太多了,所以可以依下面的方式關閉警告視窗
開啟Package Setting -> OmniSharp -> Default
將omnisharp_onsave_showwarningwindows改成false



參考文章
http://qiita.com/Miyatin/items/22adcf03b00d00ffa9f3
http://www.radjor.com/blog/p/65
http://qiita.com/japboy/items/bd29e91fca126ba65e31