⑴ unity怎麼在Standard Assets文件下的腳本中調用其他文件夾的類
跨腳本和文件夾的路徑沒關系吧,你要是想用其他腳本中的數據可以把那個屬性設定為靜態變數(static)。然後使用類名.變數名進行直接調用。
⑵ Unity腳本類為什麼要盡量避免繼承MonoBehaviour類
應該從MonoBehavior的機制來分析比較合適
如果你的類無需引擎提供的各種初始化, 更新及析構, 物理, 渲染等的回調. 最好不要繼承MonoBehavior
繼承後, 引擎會在事件觸發時, 通過反射調用各種函數. 這是需要消耗性能的.
當然, 如果你的類壓根沒掛上GameObject. 理論上說, 應該沒啥卵用
所以總結, 弄不繼承MonoBehavior盡量不派生
⑶ Unity不同腳本或者多個腳本之間的執行順序Awake, Start
我們都知道,Unity中某個腳本的執行順序是Awake、Start、Update、LateUpdate等,但是不同的腳本之間的執行順序是怎樣的呢?
例如我有兩個腳本Script1和Script2,那麼這兩個腳本的Awake執行順序是怎樣的呢?
要知道真相我們就必須了解Unity後台的運行原理,其實Unity後台是單線程執行的,所謂的協程都是偽多線程。不同腳本的Awake在後台的執行真相是這樣的:
Start、Update等函數也是相同的道理,那麼問題就來了,這么多腳本,他們的執行順序到底是怎樣的呢?
2.點擊右上角Execution Order顯示如下:同樣可以在Edit>Project Settings>Script Execution Order也可以打開這個頁面
3、點擊加號添加你想要排序的腳本文件。
4、拖動腳本文件進行排序。
5、只要把腳本的Default Time的時間改大一點,這個腳本就會遲運行的。
趕緊來試試吧!
⑷ Unity腳本類為什麼要盡量避免繼承MonoBehaviour類
首先這個結論和概念就是錯誤的。
Unity 的一般腳本類,大致可以分為游戲控制類(比如控制游戲角色、場景物品、NPC等),和用於游戲的特定數據存儲類(比如表示某類物品的屬性),前者必須繼承於 MonoBehaviour 類,因為這些類要通過 Awake、Start 和 Update 等進入游戲的初始化和主循環,而後面的那些數據類倒不一定非繼承自 MonoBehaviour 因為這樣可以縮小類的位元組大小。
⑸ 如何在unity中的腳本進行類名更改
地在MonoDevelop里把類名直接改掉,會破壞現有場景以及Project Assets中所有引用該腳本的鏈接,屆時還需要一個一個把腳本添加回去,非常麻煩。其實只要遵循以下3個步驟,即可順利重命名類名,且不破壞任何資源鏈接以及腳本之間的引用:
在Project Assets中,修改腳本文件名稱。
雙擊改好名的腳本,在MonoDevelop中打開,然後將游標移至類名處,按鍵盤F2鍵,在彈出對話框中輸入新名稱(與腳本名相同)。
Ctrl+S保存腳本。
注意:第3步中如果改名牽涉到多個引用到該類的腳本,且這些腳本正好在MonoDevelop中的其他tab打開了,會發現這些腳本也被修改了,此時還需要對他們一一進行保存,否則編譯器會報錯,更快捷的方法是:File->Save All。
⑹ Unity幾個基類的大致關系
Unity里C#腳本中最基本的類
派生自 UnityEngine.Object ,Unity里另一個重要的類,同時也是所有能添加到游戲對象GameObject上的組件(Componet)的基類。
派生自 UnityEngine.Component ,有兩個自己新的特有成員
enabled --啟用狀態,會執行每幀的更新,禁用狀態下則不會執行更新
isActiveAndEnabled --表示當前的Behaviour是否被啟用
派生自 UnityEngine.Behaviour
所有Unity里的腳本都顯式的繼承自這個 UnityEngine.MonoBehaviour
UnityEngine.Object --> UnityEngine.Component --> UnityEngine.Behaviour --> UnityEngine.MonoBehaviour
⑺ Unity教程:Unity腳本程序基礎(三)
中國AR網(www.chinaar.com)連續分享了Unity教程,獲得了火熱的反響,今天再次分享教程《Unity教程:Unity腳本程序基礎》
Unity腳本語言:
Unity3D 目前支持三種語言的腳本程序,包括C#、JavaScript、 Boo,在一個游戲中開發者可以使用一種或者同時使用多種語言來實現腳本的控制。
教程由中國AR網資源教程(http://www.chinaar.com/ZYJC/)分享,更多教程進入中國AR網可以看到,有相關問題也可以在文章後面進行評論。
⑻ unity的js腳本怎麼調用c#的類
在c#中一般會封裝成dll文件對外提供介面調用,unity的js腳本也是這樣的調用方式。
一、創建dll文件
1。打開vs文件->新建-> 項目->C#->類庫,輸入項目的名稱,創建一個dll項目;
2。引入 UnityEngine UnityEditor ;這兩個文件放在unity安裝目錄的Unity\Editor\Data\Managed路徑下,
具體添加步驟:右鍵點擊解決方案->添加引用->瀏覽;
3。如果加入了UnityEngine UnityEditor,在項目中就可以using UnityEngine 和 UnityEditor;如果項目中不需要,也可以省略第二步;
舉例說明:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using UnityEditor;
using System.Collections;
namespace dlltest
{
class Class2 : MonoBehaviour
{
void Start()
{
Debug.Log("this is unity call C# dll test!");
}
}
}
5。F5啟動生成解決方案(debug或者release),把生成的dll放到unity工程的asset下;
6。如果繼承了Monobehaviour的類在dll的子對象中有顯示,這樣就可以綁定到GameObject上了,如果是要引用dll的類,需要using 命名空間,名字一般和項目名稱一致才能調用。
⑼ unity腳本開發:一些重要的類和類間的關系圖
Unity 常用類間的關系圖
Unity 任何要綁定在 GameObject 上的腳本都必須繼承自 MonoBehaviour. 許多常用的類都屬於組件, 如 Transform,Camera,Light 和 Animation 等. 所有的 GameObject 上都綁定了一個 Transform 組件, 且該組件無法被刪除.
MonoBehaviour 常用方法
Transfrom
Object
GameObject
Component
Time
Animation
GameObject
tag
transfromg
GetComponment
GetComponmentInChildren
GetComponmentInParent
GetComponmenstInChildren
GetComponmentsInParent
對物體進行位置,大小,縮放的改變,找孩子
position:The position of the transfrom in world space.在世界空間坐標transform的位置。
localposition: The position of the transfrom relative to parent transfrom.相對於父級的變換的位置。
LossyScale:相對於模型的,物體的全局縮放(只讀)。
LocalScale:相對於父級物體變換的縮放。
Translate:function Translate ( translation : Vector3, relativeTo : Space = Space.Self ) : void
移動transform在translation的方向和距離。
function Translate ( x : float, y : float, z : float, relativeTo : Space = Space.Self ) : void
• function Translate ( translation : Vector3, relativeTo : Transform ) : void
function Translate ( x : float, y : float, z : float, relativeTo : Transform ) : void
Roate:
RoateAround
LookAt:注視旋轉
Find:通過名字找
GitChild:Git Child(int index)根據索引查找
DetachChildren :解除父子關系
SetParent:
active 是否活動
isStatic 是否靜態
AddComponent
GetComponent
Find
FindWithTag
FindGameObjectsWithTag
SetActive
FindObjectOfType查找首個Type物體
FindObjectsOfType查找Type物體
Destroy 銷毀
Instantiate 實例