コピーペーストの1.Component
インスペクターウィンドウコンポーネント、貼り付け部品の値、新規として貼り付けコンポーネントの下にコピーすることと等価です
#if UNITY_EDITOR
//首先复制需要复制的组件
UnityEditorInternal.ComponentUtility.CopyComponent(needCopyComponent);
//粘贴组件的值到另一个组件上
UnityEditorInternal.ComponentUtility.PasteComponentValues(newComponent);
//为GameObject添加复制的组件
UnityEditorInternal.ComponentUtility.PasteComponentAsNew(gameObject);
#endif
2.コンポーネントの削除
//Running模式下
Destroy(component);
//Editor模式下
DestroyImmediate(component);
3.Editor下のUpdateメソッドまたはOnGUIスクリプト実行モード
時には計画を支援し、自動的に運転を行うために役立つエディタモードで必要ないくつかの編集ツールを実行するためには、更新の下でテストされます。クラス定義の前にExecuteInEditModeラベル缶を追加します。
[ExecuteInEditMode]
public class TestComponent : MonoBehaviour
{
}
4.ラジアン角変換
Mathf.Sin(フロート)、メソッドMathf.Cos(フロート)この正弦余弦、ユニットパラメータであるラジアンではなく角度。
ラジアン:円弧の半径に等しい弧長、それが1つのラジアン単位略語ラジアンであったため、中心角。(アーク長rα角度は、次に、角度αは、アーク長aは半径rの円)
我々が知っていることができ、定義によって、2 NRは、360°に対応する、すなわち2 NR =°で360円の円周である180 [PI] R =°です。1radアーク長rに対応し、得ることができる1rad÷π≈57.295= 180°の°の電源を入れ、1゜≈0.01745rad
Mathfを変換するための2つの変数があります。
Mathf.Deg2Rad = 0.0174532924F; //ラジアン度は、
Mathf.Rad2Deg = 57.29578F;ラジアン単位の回転角度//
我々はsin30°を尋ねるのであれば、言葉遣いはする必要があります
Mathf.Sin(30 * Mathf.Deg2Rad);
5.Vector3.ProjectOnPlane
Vector3.ProjectOnPlane(するVector3ベクターのVector3 planeNormal);ベクトルの法線ベクトルは、平面planeNormalに投影されたベクトルです。
たとえば、あなたはベクトルするVector3 V =新しいのVector3(x、y、z)を持って、あなたは彼にxy平面内の軸のベクトル(z軸法線ベクトルを)お願いしたいと思います、この方法を使用することができます
Vector3.ProjectOnPlane(v, Vector3.forward);
前記ベクトル内積、外積
ドット積
Vector3.Dot(するVector3 LHS、RHSのVector3)。
以下のように計算:| |・| COS <A、B>ここで| | B・B = |と| B |表されるベクトルの大きさは、<A、B> 2つのベクトル間の角度を表します。また、ドット積に関係なく、注文の<A、B>と<B>角度です。
ドット積が負であれば、Bの非ゼロの前提の下で、次に、Bが90度以上の角度を形成し;ゼロならば、B垂直;陽性であれば、その後、Bが鋭角を形成します。金型は単位ベクトルであるため、二つの単位ベクトルの内積2つのベクトル間の角度のCOS得られるので、我々は2つのベクトル間の角度を計算することができ、ドット積を。
Vector3 a = new Vector3(7, 0, 0);
Vector3 b = new Vector3(0, 8, 0);
//cos<a,b> = x
float x = Vector3.Dot(a.normalized, b.normalized);
//反余弦 Cos(r) = x, r = Acos(x);
float r = Mathf.Acos(x);
//前面得到的是弧度,转角度
float angle = r * Mathf.Rad2Deg;
クロス製品
Vector3.Cross(するVector3 LHS、RHSのVector3)。
計算:| C | = | AXB | = | |・| B |罪<A、B>
Vector3.Cross(B)得られた値がまだベクトルc、Cに垂直な面であり、bが形成され、右手の法則のコンプライアンス(すなわち、B曲げ方向への方向が右に操舵を意味大4方向は、cの親指の方向)であり、従ってAXB≠BXA、しかし= AXB - BXA。したがって、我々は、Bの相対的な位置を決定するために、このプロパティを使用することができ、また、のB、角度αを得ることができる2つのベクトル間の角度の罪のような2つの単位ベクトルの型クロス積
Vector3 a = new Vector3(1, 0, 1);
Vector3 b = new Vector3(0, 0, 1);
Vector3 c1 = Vector3.Cross(a, b);
Debug.Log("c1:" + c1);//c1:(0.0, -1.0, 0.0)
//xz平面上,b到a为顺时针
Vector3 c2 = Vector3.Cross(b, a);
Debug.Log("c2:" + c2);//c2:(0.0, 1.0, 0.0)
//xz平面上,a到b为顺时针
//|c| = sin<a, b>
Vector3 c = Vector3.Cross(a.normalized, b.normalized);
//x = |c|
float x = Vector3.Distance(Vector3.zero, c);
//反余弦 Sin(r) = x, r = Asin(x);
float r = Mathf.Asin(x);
//前面得到的是弧度,转角度
float angle = r * Mathf.Rad2Deg;
Debug.Log("angle:" + angle);//angle:45
等速運動、等加速度7オブジェクト
距離=速度時間*:方程式によって均一な運動、
float speed = 10;
void Update()
{
transform.position += transform.forward * speed * Time.deltaTime;
}
均一式により、動きを加速:
float speed = 0;
float endspeed;
int acceleration = 10;//加速度
void Update()
{
endspeed = speed + acceleration * Time.deltaTime;
//transform.position += transform.forward * (speed * Time.deltaTime + acceleration * Time.deltaTime* Time.deltaTime*0.5f);
transform.position += transform.forward * (speed + endspeed) * 0.5f * Time.deltaTime;
speed = endspeed;
}
8.Unityプロジェクトが開きます
あなたがシミュレートするテストを開く必要がある場合、一部の項目は、オンラインマルチプレイヤーが必要です。しかし、唯一の時に開い統一プロジェクトで、我々はよりオープン達成するのと同じ方法のカップリングにより、新しいプロジェクトを参照することができます。示されているように、元のプロジェクトを開くために必要がMainProjectだった、とMainProject_copyは、私たちのミラープロジェクトです
次のように私たちは、プロジェクトを開くために必要な同レベルのルートディレクトリに.batファイルを作成します。
%cd%
rem 需要创建的目录
set dir = CopeProjectFolderName
rem 如果没有则创建
if not exist %dir% ( md %dir%)
rem 创建链接
mklink /J %dir%\Assets YourProjectFolderName\Assets
mklink /J %dir%\ProjectSettings YourProjectFolderName\ProjectSettings
pause
CopeProjectFolderName:ミラープロジェクトファイル名
YourProjectFolderName:元のプロジェクトのファイル名
原理は、元のディレクトリ変更するように、ディレクトリを作成し、鏡の中のオリジナル作品プロジェクトの資産ProjectSettingsディレクトリに参加することで、それはディレクトリも変更されますミラー。
後には、.batファイルを実行して、新しいプロジェクトを設定し、最後に新しいプロジェクトを開くことができ団結と。