導航:首頁 > 程序命令 > unity命令行編譯

unity命令行編譯

發布時間:2022-12-29 06:49:21

1. unity會自動編譯腳本嗎

會的 當寫好腳本後保存回到unity界面右下角會有個小圈在轉 並會卡一下 這就是unity在編譯腳本

2. 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) 的最後有相關知識,請自行查閱 _ 。

3. Unity 命令行

1 運行程序,先cmd進入相應的unity 版本的安裝目錄下的Editor文件夾下。

1.1  unity.exe -projectPath  xxx   打開xxx路徑程序

1.2  unity.exe -buildTarget   iOS  切換平台等等

1.3  unity xxx -executeMethod xxx.xx 調用程序的xx類的xx方法 方法必須是靜態的,類必須要放在Editor下

1.4 unity -quit xxxx..... 是執行完完退出程序

1.5 重要點        GetCommandLineArgs 

如何傳遞參數  其實很簡單 直接在 後面跟上 GetCommandLineArgs xxx參數就可

但是在unity中要用響應的方法接收 

String[] arguments = Environment.GetCommandLineArgs();

arguments []數組就是傳遞 的參數,

完整的例子:

unity.exe -quit -projectPath XXX -buildTarget Win64 -executeMethod 類名. 方法名 GetCommandLineArgs android

XXX是項目路徑

4. unity按播放器顯示編譯器錯誤,怎麼解決

unity按播放器顯示編譯器錯誤解決的步驟:
1、找到文件所在位置。
2、step1刪了此文件。
3、step2重新打開unity文件可自動生成。

5. Unity3d:Canvas適配屏幕解析度與錨點(Anchors與Pivot)

IOS:
IOS:使用shell命令打包並上傳Itunes
Unity3d:
Unity3d:Canvas適配屏幕解析度與錨點(Anchors與Pivot)
Unity3d:在屏幕邊緣顯示其他玩家方位
Unity3d:命令行打包Android
Unity3d:命令行編譯IOS
Unity3d:使用Jenkins自動編譯打包IOS(只能打包Development)
Unity3d:使用Jenkins自動編譯打包IOS(打包Ad-hoc,上傳itunes)

所有的UI都有一個Root Canvas,該Canvas的RectTransform不可修改。
所有 Canvas坐標系 方向都是 右側為X軸正方向 上方為Y軸正方向
該Canvas還帶有一個 Canvas Scaler 組件,可以通過該組件適配不同的屏幕解析度。

Canvas Scaler 中有一個 UI Scale Mode 屬性,用於確定畫布中的UI元素如何縮放。

以下假如屏幕解析度為1500 * 3000。

使Canvas寬高保持與屏幕解析度一致。屏幕解析度有多大,Canvas寬高就有多大( Scale Factor 縮放因子為1時)。

所以, Canvas寬高 = 屏幕解析度 / 縮放因子

使Canvas的寬高比與屏幕解析度的寬高比保持一致。
縮放時需要基於下面的 Reference Resolution(參考解析度) 進行縮放。
因為此時屏幕解析度的寬高比為:1500 / 3000 = 0.5,所以在該模式下,無論怎麼調整參數,Canvas寬高比也一直為0.5,不會變。
所以, Canvas寬高比 = 屏幕解析度寬高比

縮放時用的參考解析度。
下面假設參考解析度是1080 * 1920。

如果屏幕解析度與參考解析度的寬高比不一致,則根據選擇的模式對Canvas寬高進行縮放。
如果屏幕解析度與參考解析度的寬高比一致,該選項怎麼調都不管用。

基於下面 Match 對Canvas寬高進行縮放。

縮放後,Canvas的寬高一定不低於參考解析度的寬高。

縮放後,Canvas的寬高一定不高於參考解析度的寬高。與 Expand 類似。

錨點說難不難,只是不好描述,但可以用例子來說明。
假如Canvas擁有一個Image節點。
對於 Image所在的坐標系 坐標系方向與Canvas坐標系方向相同

下面看下Image節點的 錨點在Canvas的不同位置 的情況:

單錨點 ,從Unity上看,就是4個小三角形聚在一個點。
單錨點在Canvas的位置(假設為點p) 都滿足以下邏輯:

可以總結出以下公式(p為單錨點在Canvas的位置,pivot為單錨點的Pivot屬性):
Image所在坐標系 原點在Canvas中的坐標 = (p.x + Image.Width * (0.5 - pivot.x), p.y + Image.Height * (0.5 - pivot.y))

雙錨點 ,從Unity上看,就是2個小三角形聚在一個點。

左上角有2個小三角形,左下角有2個小三角形
此時,Image擁有 PosX,Top,Width,Bottom 這四個位置參數。
而且, 錨點的Pivot的Y不起作用
Image的Height = (Canvas.Height - Top - Bottom) / 2
如果設置Image的Top,Bottom都為0的話,則Image的高會與Canvas的高一致。
Image所在坐標系原點在Canvas中的坐標 = (Image.Width * (0.5 - Pivot.x) + PosX , Image.Height / 2 + Top)

底部邊框的中心有2個小三角形,頂部邊框的中心有2個小三角形
此時,Image擁有 PosX,Top,Width,Bottom 這四個位置參數。
而且, 錨點的Pivot的Y不起作用
Image的Height = (Canvas.Height - Top - Bottom) / 2
如果設置Image的Top,Bottom都為0的話,則Image的高會與Canvas的高一致。
Image所在坐標系原點在Canvas中的坐標 = (Image.Width * (0.5 - Pivot.x) + Canvas.Width / 2 + PosX , Image.Height / 2 + Top)

右上角有2個小三角形,右下角有2個小三角形
此時,Image擁有 PosX,Top,Width,Bottom 這四個位置參數。
而且, 錨點的Pivot的Y不起作用
Image的Height = (Canvas.Height - Top - Bottom) / 2
如果設置Image的Top,Bottom都為0的話,則Image的高會與Canvas的高一致。
Image所在坐標系原點在Canvas中的坐標 = (Image.Width * (0.5 - Pivot.x) + Canvas.Width + PosX , Image.Height / 2 + Top)

左上角有2個小三角形,右上角有2個小三角形
此時,Image擁有 Left,PosY,Right,Height 這四個位置參數。
而且, 錨點的Pivot的X不起作用
Image的Width = (Canvas.Width - Left - Right) / 2
如果設置Image的Left,Right都為0的話,則Image的寬會與Canvas的寬一致。
Image所在坐標系原點在Canvas中的坐標 = (Image.Width / 2 + Left , Image.Height * (0.5 - Pivot.x) + PosY)

左側邊框的中心有2個小三角形,右側邊框的中心有2個小三角形
此時,Image擁有 Left,PosY,Right,Height 這四個位置參數。
而且, 錨點的Pivot的X不起作用
Image的Width = (Canvas.Width - Left - Right) / 2
如果設置Image的Left,Right都為0的話,則Image的寬會與Canvas的寬一致。
Image所在坐標系原點在Canvas中的坐標 = (Image.Width / 2 + Left , Image.Height * (0.5 - Pivot.x) + Canvas.Height / 2 + PosY)

左下角有2個小三角形,右下角有2個小三角形
此時,Image擁有 Left,PosY,Right,Height 這四個位置參數。
而且, 錨點的Pivot的X不起作用
Image的Width = (Canvas.Width - Left - Right) / 2
如果設置Image的Left,Right都為0的話,則Image的寬會與Canvas的寬一致。
Image所在坐標系原點在Canvas中的坐標 = (Image.Width / 2 + Left , Image.Height * (0.5 - Pivot.x) + Canvas.Height + PosY)

四錨點 ,從Unity上看,就是4個小三角形全都是分散的( 左下角、左下角、右上角、右下角 )。
此時,Image擁有 Left,Top,Right,Bottom 這四個位置參數。
而且, 錨點的Pivot不起作用
Image的Width = (Canvas.Width - Left - Right) / 2
Image的Height = (Canvas.Height - Top - Bottom) / 2
如果設置Image的Left,Top,Right,Bottom都為0的話,則Image的寬高會與Canvas的寬高一致。
Image所在坐標系原點在Canvas中的坐標 = (Image.Width / 2 + Left , Image.Height / 2 + Top)

屏幕坐標系與Canvas坐標系都是 左下角為原點,向右為X軸正方向,向上為Y軸正方向

在屏幕坐標繫上有個點P(x, y),我們先把屏幕解析度的寬高縮放到與Canvas的寬高一致,此時P點的坐標也會隨著縮放。
因為屏幕坐標系與Canvas坐標系都是左下角為原點,所以縮放完成後的P的位置(記作P2),就是P點在Canvas坐標繫上的位置。
P2 = (P.x * Canvas.Width / Screen.Width, P.y * Canvas.Height / Screen.Height)
現在有一個Image UI,我們先把該Image的錨點設置為左下角( Anchors.Min(0, 0),Anchors.Max(0, 0) ),然後把P2的位置賦值給Image的anchoredPosition,此時該Image剛好就在P點的位置。

在Canvas坐標繫上有一個Image UI,我們先把該Image的錨點設置為左下角( Anchors.Min(0, 0),Anchors.Max(0, 0) ),然後把Canvas的寬高縮放到與屏幕解析度的寬高一致,此時Image的anchoredPosition(記作P)也會隨著縮放。
因為屏幕坐標系與Canvas坐標系都是左下角為原點,所以縮放完成後的Image的anchoredPosition(記作P2),就是Image在屏幕坐標繫上的位置。
P2 = (P.x * Screen.Width / Canvas.Width, P.y * Screen.Height / Canvas.Height)

6. 如何用unity打開內置編譯器

用unity打開內置編譯器步驟如下:
1、在Unity這里找到項目列表。
2、點擊添加按鈕對已安裝的編譯器進行添加。
3、選擇已安裝的編譯器進行選擇。

7. unity 3D 中運行前出現編譯錯誤怎麼解決

問題在於編譯沒有通過。
首先看上去你的資源的版本和你的Unity3D的版本不一樣,以至於rigidbody沒辦法用這種方式訪問,建議使用.GetComponent 方法。
然後是你的資源的似乎缺少的Antialiasing,AAMode文件以至於無法訪問這個腳本,建議看一眼這兩個文件是否還存在。

8. unity怎麼使用bitcode編譯

的視頻(包括透明視頻和流媒體)的播放,支持二維碼識別。
EasyAR支持PC和移動設備等多個平台,EasyAR不會顯示水印,也沒有識別次數限制。
在拿到EasyAR package或EasyAR樣例之後,你需要一個key才能使用。請確保在使用EasyAR之前閱讀以下內容。
這篇文章介紹如何運行EasyAR unity樣例。
工具/原料

操作系統:Windows 7、Mac OS X、Android 4.0、iOS 7.0
Android/iOS GLES2、Unity 3D、
方法/步驟

1
打開樣例
首先你需要打開unity樣例工程並打開樣例中的場景。
Unity 4 如下圖所示,

2

而Unity 5 如下,

3

使用Unity 5打開工程之後,需要按照Unity的說明升級工程。升級之後就可以正常使用,配置和Unity 4相同。

4
輸入Key

找到 『EasyAR』 object 並在inspector中輸入『Key』。如果key是非法的,程序初始化將會失敗,可能顯示黑屏。

5
按照下面的說明在TextArea 中填入Key。

6
就是這么簡單!現在就可以在包括Windows/Mac/Android/iOS所有平台上運行Unity 樣例了。

XCode 配

9. unity 導出安卓工程怎麼編譯成apk

1.Android端代碼可以在Eclipse中開發(AndroidStudio沒有試,應該也可以)

2.Unity3D端代碼要在Unity中開發

3.Android和Unity3D端,兩邊都需要加入一些代碼從而可以使之關聯交互。

4.將Android端代碼編譯成jar文件以插件形式放入到Unity端中

5.在Unity中將整個項目Build成apk文件,然後安裝到手機或模擬器里運行

本文主要講解1,2,3。對於4,5建議大家去看雨松MOMO的Unity博客的第17篇和第18篇。

UnityPlay:

在編寫Android端和Unity3d端代碼前,有必要先了解一下可以使兩部分交互的類UnityPlay。

個人理解UnityPlay是個Unity提供給外部交互的一個介面類。

為什麼是「個人理解」?這我不得不爆粗口了,TMD官網根本就沒有相關的API和文檔(如果大家有誰找到一定給我來一份,就當我罵自己了)。

在關聯Android時,想拿到UnityPlay以及相關類的jar包可以從下面的地址找到:Unity安裝路徑\Editor\Data\PlaybackEngines\androidplayer\bin在bin文件夾下有一個classes.jar的jar文件,它就是我們想要的。

而在bin同目錄下有一個src文件,點擊到最後有3個類,分別是UnityPlayerActivity.java,UnityPlayerProxyActivity.java,UnityPlayerNativeActivity.java。前兩個打開個後只有一行代碼,說的是UnityPlayerActivity和UnityPlayerProxyActivity都繼承自UnityPlayerNativeActivity。而打開UnityPlayerNativeActivity中居然有代碼,而且我估計這應該是UnityPlayerNativeActivity的源碼

由於關於UnityPlay的資料我只找到這么一個,所以我把UnityPlayerNativeActivity中的代碼都貼出來,如果我註解有不對的地方希望大家指正。

/**
* UnityPlayerActivity,UnityPlayerProxyActivity都繼承自UnityPlayerNativeActivity
* 而UnityPlayerNativeActivity繼承自NativeActivity
* 在該類里定義了一些和ANDROID生命周期相同的回調方法,留給自定義的Activity子類重寫。
*/
public class UnityPlayerNativeActivity extends NativeActivity
{
//UnityPlayer的引用,並且我們不能改變這個引用變數的名字,它被native code所引用
protected UnityPlayer mUnityPlayer;

protected void onCreate (Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
// 設置顯示窗口參數
getWindow().takeSurface(null);
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
getWindow().setFormat(PixelFormat.RGB_565);

// 創建一個UnityPlayer對象,並賦值給全局的引用變數
mUnityPlayer = new UnityPlayer(this);
//為UnityPlayer設置一些參數
if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
boolean trueColor8888 = false;
// UnityPlayer.init()方法需要在將view附加到layout之前調用。它將會調用native code
mUnityPlayer.init(glesMode, trueColor8888);

// 從UnityPlayer中獲取到Unity的View視圖
View playerView = mUnityPlayer.getView();
// 將Unity視圖載入到根視圖上
setContentView(playerView);
// 使Unity視圖獲取焦點
playerView.requestFocus();
}
protected void onDestroy ()
{
// 當Activity結束的時候調用UnityPlayer.quit()方法,它會卸載之前調用的native code
mUnityPlayer.quit();
super.onDestroy();
}

// 下面幾個方法都是ANDROID相關回調方法,確保在ANDROID執行相應方法時UnityPlayer也需調用相應方法
protected void onPause()
{
super.onPause();
mUnityPlayer.pause();
}
protected void onResume()
{
super.onResume();
mUnityPlayer.resume();
}

public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
mUnityPlayer.configurationChanged(newConfig);
}
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
mUnityPlayer.windowFocusChanged(hasFocus);
}
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
return mUnityPlayer.onKeyMultiple(event.getKeyCode(), event.getRepeatCount(), event);
return super.dispatchKeyEvent(event);
}
}

閱讀全文

與unity命令行編譯相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:485
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163