1. Unity3d:在屏幕邊緣顯示其他玩家/敵人/物體的方位
IOS:
IOS:使用shell命令打包並上傳Itunes
Unity3d:
Unity3d:Canvas適配屏幕解析度與錨點(Anchors與Pivot)
Unity3d:在屏幕邊緣顯示其他玩家方位
Unity3d:命令行打包Android
Unity3d:命令行編譯IOS
Unity3d:使用Jenkins自動編譯打包IOS(只能打包Development)
Unity3d:使用Jenkins自動編譯打包IOS(打包Ad-hoc,上傳itunes)
需要注意兩個點x坐標相等的情況:
如果兩個點x坐標相等,則該直線與y軸平行;
如果兩個點y坐標相等,則該直線與x軸平行;
如果兩個點x,y坐標都相等,則不是線,是同一個點。
需要注意a1和a2相等的情況:
如果a1和a2相等,b1和b2不相等,則兩條直線平行,無交點;
如果a1和a2相等,b1和b2相等,則兩條直線是同一條線,無交點;
如果a1和a2不相等,b1和b2相等,則兩條直線不平行,有交點,相交於y軸b1點或b2點;
如果a1和a2不相等,b1和b2不相等,則兩條直線不平行,有交點。
注意是 線段 ,不是直線。
通過(1)求得端點所在的直線的方程;
通過(2)求得這兩條直線的交點。
這里需要判斷下交點是落在線段內,還是線段外(虛交點):
如果交點x坐標小於線段1的左側端點的x坐標,或者交點x坐標大於線段1的右側端點的x坐標,則該交點落在線段1外,即線段的延長線上,是個虛交點。
反之,是線段1的正常交點。
Unity3d:Canvas適配屏幕解析度與錨點(Anchors與Pivot)
首先,playerA是一定在屏幕內的,這里需要判斷playerB是不是在屏幕內。
如果playerB是在屏幕內,則無需後面的處理。
如果playerB是在屏幕外,讓我們繼續。
然後,把playerA和playerB的世界坐標轉換成屏幕坐標系裡的坐標,分別記作A和B。
注意 :這里有個容易鑽進去的誤區,就是很容易想到去計算方向向量,即( BA )。計算完之後又會自然而然的想著用這個向量去處理上面的問題,最後會發現,自己已經進入了一個深坑裡,深深的把自己的思維給圈住了,即使偶爾換個方向思考,比如求交點的方式,還是容易被這個向量給迷惑,總想著去用這個向量去解決,盡管這個向量在這個方式里沒啥卵用。
這時,因為A點在屏幕內,B點在屏幕外,所以線段AB一定與屏幕的某一個邊框有一個交點( 實交點,非虛交點 )。
這個交點的位置就是我們需要放置方位指示器UI的位置了。
注 :實交點,即交點位於線段上;虛交點,即交點位於線段的延長線上。
屏幕有4個邊框,所以我們要先找出這四個邊框線段各自擁有的端點坐標。
這里需要注意,A和B兩個點是在屏幕坐標繫上,線段AB與屏幕邊框的交點也是位於屏幕坐標繫上。
而方位指示器UI是放在Canvas上的,位於Canvas坐標系內。
所以在計算之前要先做坐標系轉換。
這里有兩個轉換方式:
注意:後面用到的知識在文章 Unity3d:Canvas適配屏幕解析度與錨點(Anchors與Pivot) 中有詳細說明,遇到問題可自行查閱。
先把A點和B點轉換到Canvas的坐標系內:
cA = (A.x * Canvas.Width / Screen.Width, A.y * Canvas.Height / Screen.Height)
cB = (B.x * Canvas.Width / Screen.Width, B.y * Canvas.Height / Screen.Height)
再找出Canvas的四個邊框線段對應的端點(左下角是原點):
左側邊框端點:lbP(0, 0) 、ltP(0, Canvas.Height) ;
底部邊框端點:lbP(0, 0) 、rbP(Canvas.Width, 0) ;
右側邊框端點:rbP(Canvas.Width, 0) 、rtP(Canvas.Width, Canvas.Height) ;
頂部邊框端點:ltP(0, Canvas.Height) 、rtP(Canvas.Width, Canvas.Height) ;
有了線段cAcB和Canvas的四個邊框線段,根據上面的數學知識,可以輕松求得線段cAcB與Canvas某一個邊框的交點,我們記作點P。此時點P位於Canvas的坐標系內。
最後把方位指示器UI在P點顯示出來即可。在文章 Unity3d:Canvas適配屏幕解析度與錨點(Anchors與Pivot) 的最後有相關知識,請自行查閱 _ 。
現在線段AB的兩個端點有了(即A、B點),下面再找出屏幕的四個邊框線段對應的端點(左下角是原點):
左側邊框端點:lbP(0, 0) 、ltP(0, Screen.Height) ;
底部邊框端點:lbP(0, 0) 、rbP(Screen.Width, 0) ;
右側邊框端點:rbP(Screen.Width, 0) 、rtP(Screen.Width, Screen.Height) ;
頂部邊框端點:ltP(0, Screen.Height) 、rtP(Screen.Width, Screen.Height) ;
有了線段AB和屏幕的四個邊框線段,根據上面的數學知識,可以輕松求得線段AB與屏幕某一個邊框的交點,我們記作點P。此時點P位於屏幕的坐標系內。
然後把交點P轉換到Canvas的坐標系內:
cP = (P.x * Canvas.Width / Screen.Width, P.y * Canvas.Height / Screen.Height)
最後把方位指示器UI在cP點顯示出來即可。在文章 Unity3d:Canvas適配屏幕解析度與錨點(Anchors與Pivot) 的最後有相關知識,請自行查閱 _ 。
2. Android開發常用工具(一)
1、Android Studio
谷歌推出的Android集成開發工具,經過多年的迭代發展已經變得非常強大及人性化,各式各樣的工具插件滿足日常的開發需求,也可以自己製作工具插件,下載即可贈送SDK和JDK大禮包,並配置好環境變數,基本做到一鍵式開發。記得15年剛開始做開發時使用的是Eclipse,需要手動配置sdk,jdk,環境變數等,對於當時處於新手的我來說非常的繁瑣,也增加了時間成本。
2、Figma
UI製作查看工具,最近幾年比較火的UI設計軟體,使用起來就跟在線文檔一個感覺,設置許可權之後,只有美工人員可以進行編輯,而開發人員只能進行查看,裡面配置了Android、ios、css等不同平台所需要標注參數,方便不同平台開發人員查看,對比其它工具優點是打開查看UI非常方便,不需要像pxcook要先下載源UI文件,需要吐槽的是導出多尺寸圖片沒有Pxcook工具那樣方便,只能一張一張導出命名,可能是沒找到正確的使用方式,有懂的同學可以下方留言。
3、GitLab
用於代碼倉庫管理系統,使用Git作為管理工具,並在此基礎上搭建起來的Web服務。一般用於管理開發的業務主項目、開發自研的框架等,可以很方便查看遠程代碼倉庫以及組員的提交內容,也可以使用裡面的ci去構建自動化打包,但目前使用到的自動化打包構建方式還是Jenkins比較多點,ci配置需要許可權等問題。
4、Git
開源的分布式版本控制系統,同樣的工具還有svn(小烏龜),cvs等,用於代碼的提交拉取合並等。記得剛開始做開發時用的是svn,每次發布上線完一個版本後都要備份一份代碼在伺服器,開發過程中途如果遇到要緊急發布個小版本就可以通過備份的代碼進行開發發布小版本,非常不方便。直到後面用了git替代才發現原來這么的方便,git可以很方便拉取分支、切換分支、合並分支到主幹,再結合Gitlab、GitHub等倉庫管理系統進行可視化代碼管理,大大提高了效率。
5、Jenkins
基於Java開發的一種持續集成工具,用於自動化打包apk到指定伺服器,測試人員通過鏈接下載apk進行測試。常規操作是將 Jenkins工具 部署
在遠程linux伺服器,將工程項目代碼、SDK、JDK等打包編譯需要的也配置到該伺服器,還要一份打包Apk上傳包到指定FTP的腳本,本地電腦通過web操作jenkins進行項目選擇分支選擇打包就可以。
未完待續