目前分類:程式設計 (363)

瀏覽方式: 標題列表 簡短摘要

最近要使用firebase for unity sdk發現匯入後執行build會出現錯誤如下:

[Unity] XmlException: 'tools' is undeclared namespace. file:///BUILD_PATH/-------------------------/Temp/StagingArea/AndroidManifest.xml Line 10, position 1

文章標籤

狼翔月影 發表在 痞客邦 留言(2) 人氣()

因應專案需求,需要與後台串接api,目前一般都是使用json格式來傳,所以在unity中有兩種方式一種使用網路上流傳的SimpleJSON針對keyword來取值,一種使用JsonUtility

以下為使用二種解析的方法

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

因為最近有工作需求要在Unity使用fb sdk,才發現目前最新版的sdk7.10.1是有問題的無法使用,所以花了一些時間下載相關版本,目前找到比較好用的版本,是facebook-unity-sdk-7.2.0

下載網址:https://developers.facebook.com/docs/unity/downloads

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

android2.2获取当前系统语言
Locale.getDefault().getLanguage(),返回值如:es,zh

文章標籤

狼翔月影 發表在 痞客邦 留言(1) 人氣()

preferredLanguages:

language code = en, display name = English, in language = English

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

練習各種php資訊轉為json格式寫法

<?php

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

今天為了要暫存檔案所以上網找了一下資源

發現www.texture 要改成使用www.LoadFromCacheOrDownload 是不可能的,因為前者可以直接使用www.texture存取資源,後者只適用於加載 AssetBundle

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

python -m pip install -U pip

pip install -U setuptools

文章標籤

狼翔月影 發表在 痞客邦 留言(2) 人氣()

http://www.cg.com.tw/Unity/htm/Unity_030.asp

您是否曾經在使用 Unity 的過程遇到難以解決的問題?透過 Unity 顯示的錯誤訊息通常可以找出原因,並且進一步尋找解決的方法。此外,若遇到正常操作不該發生的問題,有時先存檔並關閉 Unity 程式,再重新開啟 Unity 或許就可以排除問題。

文章標籤

狼翔月影 發表在 痞客邦 留言(1) 人氣()

如題,要判斷語系如cn, tw可以使用

string systemName = System.Globalization.CultureInfo.CurrentCulture.Name; // en-US 

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

刪除.subversion/auth 檔案或資料夾
指令如下:

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

public class SVNUtils
    {
        public static bool Cancel;
        private readonly SvnClient SC;
        private string path;
        private string prog;
        private string svnurl;
        public SVNUtils()
        {
            svnurl = "svn://127.0.0.1:" + TCS.Config.AppConfig.RunTime.SVNPort.ToString();
            SC = new SvnClient();
            SvnUriTarget rem = new SvnUriTarget(svnurl);
            SC.Authentication.ClearAuthenticationCache();
            SC.Authentication.Clear();
            SC.Authentication.DefaultCredentials = new SvnCredentialProvider(
                  TCS.Config.AppConfig.RunTime.SVNUsername,
                   TCS.Config.AppConfig.RunTime.SVNPassword,
                    svnurl);//默认用户名密码
        }
        public bool Commit()
        {
            Console.WriteLine("开始检查是否需要提交新参数表...");
            SvnCommitArgs ca = new SvnCommitArgs();
            SvnStatusArgs sa = new SvnStatusArgs();
            Collection<SvnStatusEventArgs> statuses;
            SC.GetStatus(GetAppLoc(), sa, out statuses);
            int i = 0;
            foreach (var item in statuses)
            {
                if (item.LocalContentStatus != item.RemoteContentStatus)
                {
                    i++;
                }
                if (!item.Versioned)
                {
                    SC.Add(item.FullPath);
                    Console.WriteLine("新增加文件" + item.FullPath);
                    i++;
                }
                else if (item.Conflicted)
                {
                    SC.Resolve(item.FullPath, SvnAccept.Working);
                    Console.WriteLine("处理冲突文件" + item.FullPath);
                }
                else if (item.IsRemoteUpdated)
                {
                    SC.Update(item.FullPath);
                    Console.WriteLine("处理冲突文件" + item.FullPath);
                }
                else if (item.LocalContentStatus == SvnStatus.Missing)
                {
                    SC.Delete(item.FullPath);
                    Console.WriteLine("处理丢失文件" + item.FullPath);
                    i++;
                }
            }
            if (i > 0)
            {
                ca.LogMessage = "";
                SvnCommitResult scr;
                if (SC.Commit(GetAppLoc(), ca, out scr))
                {
                    Console.WriteLine("提交完成");
                }
                else
                {
                    Console.WriteLine("提交失败");
                }
            }
            else
            {
                Console.WriteLine("无变化,无需检查");
            }


            return true;
        }
        /// <summary>
        /// 获取本地工作副本svn路径
        /// </summary>
        /// <returns></returns>
        public string GetAppLoc()
        {
            return Comm.parentPath + Comm.issuedPath;
        }
        /// <summary>
        /// 检查版本号,如果版本号不符, 则更新
        /// </summary>
        /// <returns></returns>
        public bool CheckVer()
        {
            bool result = true;
            var repos = new SvnUriTarget(svnurl);
            var local = new SvnPathTarget(GetAppLoc());
            try
            {
                notiny = "正在检查服务器版本...";
                ShowInfo();
                SvnInfoEventArgs serverInfo;
                bool oks = SC.GetInfo(repos, out serverInfo);
                notiny = "正在检查本地版本...";
                ShowInfo();
                SvnInfoEventArgs clientInfo;
                bool okc = SC.GetInfo(local, out clientInfo);
                if (oks && okc) //如果客户端服务端都会成功, 则对比服务器版本, 否则返回true 执行更新命令
                {
                    result = (serverInfo.Revision > clientInfo.Revision);
                }
                ShowInfo(string.Format("检查完毕,服务器版本{0}客户端版本{1}",
                                       (serverInfo != null ? serverInfo.Revision.ToString() : "(未知)"),
                                       (clientInfo != null ? clientInfo.Revision.ToString() : "(未知)")
                             ));
            }
            catch (Exception)
            {
                ShowInfo("检查文件是出现错误...");
            }
            return result;
        }
        /// <summary>
        /// 初始化 如果没有被管理,则签出
        /// </summary>
        /// <returns></returns>
        public bool Init()
        {
            ShowInfo("正在初始化....");
            bool result = true;
            HandEvents();
            if (!SvnTools.IsManagedPath(GetAppLoc()))//查看某目录是否是受svn管理的状态, 即是否为工作副本
            {
                notiny = "正在检出文件.";
                ShowInfo();
                result = SC.CheckOut(new SvnUriTarget(svnurl), GetAppLoc());
                ShowInfo("文件检出完成.");
            }
            ShowInfo("初始化完毕.");
            return result;
        }
        /// <summary>
        /// 委托各种事件。
        /// </summary>
        private void HandEvents()
        {
            SC.Authentication.UserNamePasswordHandlers += Authentication_UserNamePasswordHandlers;
            SC.Authentication.UserNameHandlers += Authentication_UserNameHandlers;
            SC.Progress += SC_Progress;
            SC.Processing += SC_Processing;
            SC.Notify += SC_Notify;
            SC.SvnError += SC_SvnError;
            SC.Conflict += SC_Conflict;
            SC.Cancel += SC_Cancel;
            SC.Committed += SC_Committed;
            SC.Committing += SC_Committing;
        }
        /// <summary>
        /// 提交过程
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void SC_Committing(object sender, SvnCommittingEventArgs e)
        {
            ShowInfo("正在提交");
        }
        /// <summary>
        /// 提交完成后
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void SC_Committed(object sender, SvnCommittedEventArgs e)
        {
            ShowInfo("提交完成" + e.Revision);
        }
        /// <summary>
        /// 被取消
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SC_Cancel(object sender, SvnCancelEventArgs e)
        {
            e.Cancel = Cancel;
        }
        /// <summary>
        /// 遇到文件冲突
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SC_Conflict(object sender, SvnConflictEventArgs e)
        {
            ShowInfo("文件冲突" + e.ConflictReason.ToString());
        }
        /// <summary>
        /// 任何svn错误可以在这处理,也可以在这里处理是否取消
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SC_SvnError(object sender, SvnErrorEventArgs e)
        {
            e.Cancel = true;
            WriteError(e.Exception);
        }
        /// <summary>
        /// 输出错误
        /// </summary>
        /// <param name="e_Exception"></param>
        public void WriteError(Exception e_Exception)
        {
            ShowInfo(e_Exception.Message + e_Exception.Source + "\r\n"
                     + e_Exception.StackTrace + "\r\n"
                     );
        }
        /// <summary>
        /// 处理某项操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SC_Processing(object sender, SvnProcessingEventArgs e)
        {
            Console.SetCursorPosition(0, Console.CursorTop);
            Console.Write("正在处理操作" + e.CommandType.ToString() + ".......");
        }
        /// <summary>
        /// 处理过程,进度,,比如传送的字节数等显示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SC_Progress(object sender, SvnProgressEventArgs e)
        {
            if (e.Progress == 0)
            {
                prog = "";
            }
            else
            {
                if (e.TotalProgress ==
                    -1)
                {
                    if (e.Progress > 1024)
                    {
                        prog = ((float)(e.Progress) / 1024F).ToString("0.00") + "KB";
                    }
                    else
                    {
                        prog = ((float)(e.Progress)).ToString("0.00") + "Bytes";
                    }
                }
                else
                {
                    prog = (e.Progress).ToString("0.00");
                }
            }
            ShowInfo();
        }
        public void ShowInfo()
        {
            Console.SetCursorPosition(0, Console.CursorTop);
            Console.Write(notiny + (string.IsNullOrWhiteSpace(prog) ? "" : "(" + prog + ")"));
        }
        public void ShowInfo(string info)
        {
            Console.WriteLine(info);
        }
        public bool Update(int i)
        {
            bool ok = false;
            try
            {
                var sua = new SvnUpdateArgs { Revision = new SvnRevision(i) };
                events();
                ok = SC.CleanUp(GetAppLoc());
                ok = SC.Update(GetAppLoc(), sua);
            }
            catch (Exception ex)
            {
                ShowInfo("更新时遇到问题:" + ex.Message + "\r\n");
                WriteError(ex);
            }
            ShowInfo("更新完成....");
            return ok;
        }
        public bool Update()
        {
            ShowInfo("正在更新....");
            SC.CleanUp(GetAppLoc());
            bool ok = SC.Update(GetAppLoc());
            if (!ok)
            {
                ShowInfo("未成功,正在清理...");
                SC.CleanUp(GetAppLoc());
                ShowInfo("清理完毕,正在更新....");
                ok = SC.Update(GetAppLoc());
                if (!ok)
                {
                    ShowInfo("正在撤销本地修改....");
                    SC.Revert(GetAppLoc());
                    ShowInfo("正在清理....");
                    SC.CleanUp(GetAppLoc());
                    ShowInfo("正在更新....");
                    ok = SC.Update(GetAppLoc());
                }
            }
            ShowInfo("更新操作完成");
            return ok;
        }
        private void Authentication_UserNameHandlers(object sender, SvnUserNameEventArgs e)
        {
            e.UserName = TCS.Config.AppConfig.RunTime.SVNUsername;
        }
        private void Authentication_UserNamePasswordHandlers(object sender, SvnUserNamePasswordEventArgs e)
        {
            e.Password = TCS.Config.AppConfig.RunTime.SVNPassword;
            e.UserName = TCS.Config.AppConfig.RunTime.SVNUsername;
        }
        #region 提示信息
        private string notiny;
        private void SC_Notify(object sender, SvnNotifyEventArgs e)
        {
            notiny = string.Format("{0}:{1}.", getstringact(e.Action), new FileInfo(e.FullPath).Name);
            ShowInfo();
        }
        #endregion
        #region 提示信息中文对照
        public string getstringact(SvnNotifyAction act)
        {
            string result = null;
            switch (act)
            {
                case SvnNotifyAction.Add:
                    result = "添加";
                    break;
                case SvnNotifyAction.BlameRevision:
                    break;
                case SvnNotifyAction.ChangeListClear:
                    break;
                case SvnNotifyAction.ChangeListMoved:
                    break;
                case SvnNotifyAction.ChangeListSet:
                    break;
                case SvnNotifyAction.CommitAddCopy:
                    result = "提交添加副本";
                    break;
                case SvnNotifyAction.CommitAdded:
                    break;
                case SvnNotifyAction.CommitDeleted:
                    break;
                case SvnNotifyAction.CommitModified:
                    break;
                case SvnNotifyAction.CommitReplaced:
                    break;
                case SvnNotifyAction.CommitReplacedWithCopy:
                    break;
                case SvnNotifyAction.CommitSendData:
                    break;
                case SvnNotifyAction.Copy:
                    break;
                case SvnNotifyAction.Delete:
                    break;
                case SvnNotifyAction.Excluded:
                    result = "要排除";
                    break;
                case SvnNotifyAction.Exists:
                    result = "已存在";
                    break;
                case SvnNotifyAction.ExternalFailed:
                    result = "外部失败";
                    break;
                case SvnNotifyAction.FailedConflict:
                    result = "失败冲突";
                    break;
                case SvnNotifyAction.FailedForbiddenByServer:
                    break;
                case SvnNotifyAction.FailedLocked:
                    break;
                case SvnNotifyAction.FailedMissing:
                    break;
                case SvnNotifyAction.FailedNoParent:
                    break;
                case SvnNotifyAction.FailedOutOfDate:
                    result = "已过期且失败";
                    break;
                case SvnNotifyAction.FollowUrlRedirect:
                    break;
                case SvnNotifyAction.LockFailedLock:
                    break;
                case SvnNotifyAction.LockFailedUnlock:
                    break;
                case SvnNotifyAction.LockLocked:
                    break;
                case SvnNotifyAction.LockUnlocked:
                    break;
                case SvnNotifyAction.MergeBegin:
                    break;
                case SvnNotifyAction.MergeBeginForeign:
                    break;
                case SvnNotifyAction.MergeCompleted:
                    break;
                case SvnNotifyAction.NonExistentPath:
                    break;
                case SvnNotifyAction.PatchApplied:
                    break;
                case SvnNotifyAction.PatchAppliedHunk:
                    break;
                case SvnNotifyAction.PatchFoundAlreadyApplied:
                    break;
                case SvnNotifyAction.PatchRejectedHunk:
                    break;
                case SvnNotifyAction.PropertyAdded:
                    break;
                case SvnNotifyAction.PropertyDeleted:
                    break;
                case SvnNotifyAction.PropertyDeletedNonExistent:
                    break;
                case SvnNotifyAction.PropertyModified:
                    break;
                case SvnNotifyAction.RecordMergeInfo:
                    break;
                case SvnNotifyAction.RecordMergeInfoElided:
                    break;
                case SvnNotifyAction.RecordMergeInfoStarted:
                    break;
                case SvnNotifyAction.Resolved:
                    break;
                case SvnNotifyAction.Restore:
                    result = "恢复";
                    break;
                case SvnNotifyAction.Revert:
                    result = "还原";
                    break;
                case SvnNotifyAction.RevertFailed:
                    result = "还原失败";
                    break;
                case SvnNotifyAction.RevisionPropertyDeleted:
                    break;
                case SvnNotifyAction.RevisionPropertySet:
                    break;
                case SvnNotifyAction.Skip:
                    result = "跳过";
                    break;
                case SvnNotifyAction.SkipConflicted:
                    result = "跳过冲突";
                    break;
                case SvnNotifyAction.StatusCompleted:
                    result = "状态已完成";
                    break;
                case SvnNotifyAction.StatusExternal:
                    break;
                case SvnNotifyAction.TreeConflict:
                    result = "数冲突";
                    break;
                case SvnNotifyAction.UpdateAdd:
                    result = "更新新增";
                    break;
                case SvnNotifyAction.UpdateCompleted:
                    result = "更新已完成";
                    break;
                case SvnNotifyAction.UpdateDelete:
                    result = "更新删除";
                    break;
                case SvnNotifyAction.UpdateExternal:
                    result = "更新外部";
                    break;
                case SvnNotifyAction.UpdateExternalRemoved:
                    result = "更新外部已删除";
                    break;
                case SvnNotifyAction.UpdateReplace:
                    result = "更新替换";
                    break;
                case SvnNotifyAction.UpdateShadowedAdd:
                    break;
                case SvnNotifyAction.UpdateShadowedDelete:
                    break;
                case SvnNotifyAction.UpdateShadowedUpdate:
                    break;
                case SvnNotifyAction.UpdateSkipAccessDenied:
                    break;
                case SvnNotifyAction.UpdateSkipObstruction:
                    break;
                case SvnNotifyAction.UpdateSkipWorkingOnly:
                    break;
                case SvnNotifyAction.UpdateStarted:
                    result = "更新已开始";
                    break;
                case SvnNotifyAction.UpdateUpdate:
                    result = "更新修改";
                    break;
                case SvnNotifyAction.UpgradedDirectory:
                    result = "更新目录";
                    break;
            }
            return result ?? (result = act.ToString());
        }
        #endregion
    }


文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

此為自動產生繼承monobehavior物件

using UnityEngine;

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

出處:http://dsqiu.iteye.com/blog/2017655

如題

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

工作遇到需要等StartCoroutine 跑完後 取得變數,如截圖後取得圖檔路徑等

方法如下:

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

在整合unity 呼叫android 方法時,若出現如下錯誤

Can't create handler inside thread that has not called Looper.prepare()

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

顯示隱藏檔案]
首先在終端機上貼上以下指令,貼上後按下 Return ▼

代碼:
文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

UIApplication物件及其代理UIApplicationDelegate

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

Tells the delegate that the launch process is almost done and the app is almost ready to run.

(告訴delegate啟動進程即將完成,應用程式即將開始運行)

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()

首先,要說明一下Other Linker Flags到底是用來幹嘛的。說白了,就是ld命令除了默認參數外的其他參數。ld命令實現的是連結器的工作,詳細說明可以在終端man ld查看。

如果有人不清楚連結器是什麼東西的話,我可以作個簡單的說明。

文章標籤

狼翔月影 發表在 痞客邦 留言(0) 人氣()