您的当前位置:首页正文

Unity3D常用脚本

2021-07-03 来源:易榕旅网
场景转换:

var screenbutton: boolean; function Start(){

DontDestroyOnLoad(this); screenbutton = true; }

function Update () {

if(Input.GetKeyDown(KeyCode.Escape)){ screenbutton = true; } }

function OnGUI(){

if(screenbutton==true)

if(GUI。Button(Rect(Screen。width/2—380,Screen。height/2-190,60,50),\"Scene1\")){ print(”You click Scene1”); Application.LoadLevel (1); screenbutton = false; }else if(GUI.Button(Rect(Screen。width/2-380,Screen.height/2—130,60,50),\"Scene2”)){

print(\"You click Scene2\"); Application。LoadLevel (2); screenbutton = false; }else if( GUI。Button(Rect(Screen。width/2—375,Screen。height/2—0,50,50),”Quit”)){ print(\"You click Quit\"); Application.Quit(); } } 心得:

场景转换时,这个程序贴在按钮界面场景中。在Build Setting(导出)(在File下)菜单中加入所需场景。

0为按钮界面。可以无限增加场景。 }else if(GUI.Button(Rect(Screen。width/2-380,Screen.height/2—130,60,50),”Scene2”)){ print(\"You click Scene2\"); Application.LoadLevel (2); screenbutton = false; 复制此段程序并做修改。

运动控制键:上下左右 var TankSpeed:int = 20; function Update () {

if(Input.GetKey(KeyCode。W)){ print(\"go\");

transform。Translate(Vector3。forward * Time.deltaTime * TankSpeed); }else if(Input.GetKey(KeyCode.S)){ print(”go back”);

transform.Translate(Vector3.forward * Time。deltaTime * —TankSpeed); }else if(Input。GetKey(KeyCode。A)){ print(”turn left”);

transform.Rotate(Vector3.up * Time。deltaTime * -TankSpeed); }else if(Input。GetKey(KeyCode.D)){ print(”turn right\");

transform.Rotate(Vector3。up * Time.deltaTime * TankSpeed); } }

需要放在第一视角的物体或者摄像机上.

加天空背景:

菜单栏Component下的Rendering下的Skybox。将他加在所需场景的摄像机上,选择所需的天空。运行时自然出现。

各种按钮汇总:

鼠标碰触后显示说明文字。 function OnGUI () {

GUI.Button (Rect (0, 0, 100, 20), GUIContent (”Click me”, \"This is the tooltip\")); GUI。Label (Rect (0, 40, 100, 40), GUI。tooltip); }

多项选择,以上都选择。 var allOptions = true; var extended1 = true; var extended2 = true; function OnGUI () {

allOptions = GUI.Toggle (Rect (0,120,150,20), allOptions, ”Edit All Options\"); GUI。enabled = allOptions;

extended1 = GUI.Toggle (Rect (20,70,130,20), extended1, \"Extended Option 1”);

extended2 = GUI。Toggle (Rect (20,90,130,20), extended2, \"Extended Option 2”);

GUI。enabled = true;

if (GUI.Button (Rect (0, 160, 150, 20), \"Ok”)); print (\"user clicked ok”); }

鼠标碰触第一个按钮有解释,鼠标碰触第三个对话框有解释。碰第二个没有解释。 function OnGUI () {

GUI.Box (Rect (5, 300, 110, 75), GUIContent (”Box\ GUI。Button (Rect (10, 230, 100, 20), \"No tooltip here”); GUI.Button (Rect (10, 200, 100, 20),

GUIContent (”I have a tooltip”, \"The button overrides the box\")); GUI.Label (Rect (10,260,100,40), GUI.tooltip); }

半透明,说明性文字对话框。无选择。 function Update () {

}

function OnGUI () { GUI。BeginGroup (new Rect (Screen.width / 2 — 400, Screen.height / 2 — 300, 800, 600)); GUI。Box (new Rect (0,0,800,600),\"This box is now centered! - here you would put your main menu”);

GUI.EndGroup (); }

滚动条,选择按钮.可以放多个按钮并且节省位置。 function Update () { }

var scrollPosition = Vector2.zero; function OnGUI () {

scrollPosition = GUI。BeginScrollView (Rect (10,400,100,100), scrollPosition, Rect (0, 0, 220, 200));

GUI.Button (Rect (0,0,100,20), ”Top—left\"); GUI.Button (Rect (120,0,100,20), ”Top-right\");

GUI。Button (Rect (0,180,100,20), ”Bottom—left”); GUI。Button (Rect (120,180,100,20), ”Bottom-right”); GUI。EndScrollView (); }

循环的字幕。

var letterPause = 0。2;//定义每个字出现的时间间隔 var sound : AudioClip;//打字机的声音

private var word;//存储你打字机效果想要输出的字的变量

private var Text : String = \"My name is Ray Yang。Keep it in your heart!\";//你希望打字机效果输出的字

function Start () {

word = Text;//把你输出的字先赋值给word

Text = ”\";//把你要显示的字先抹除,以便你可以在最初显示的时候显示为空,当然你也可以加上其他字,让他先显示,打字机效果打的字会显示在这个后面 yield WaitForSeconds (2); TypeText (); }

function OnGUI () {

GUI。Label (Rect(150,15,250,25),\"Please answer my question,who am I?\"); GUI。Box (Rect(150,40,250,25),Text); }

function TypeText () {

for (var letter in word。ToCharArray()) {//做一个循环,定义一个变量letter逐次等于word中的每一个字符

Text += letter;//把这些字赋值给Text

if (sound)//控制声音,出现一个字,发一个声音

audio.PlayOneShot (sound);

yield WaitForSeconds (letterPause); } }

function Update () { if(Text == word){ Text=\"”; TypeText(); } }

有打字声音的字幕循环。 var screnbutton:boolean; var icon : Texture;

var allOptions = true; var extended1 = true; var extended2 = true;

var letterPause = 0.2;//定义每个字出现的时间间隔 var sound : AudioClip;//打字机的声音

private var word;//存储你打字机效果想要输出的字的变量 static var Text : String = ”This is zcx first project! I can do it.”; var del : boolean = false;

var particle : GameObject;

function Start(){

DontDestroyOnLoad(this); screnbutton=true;

word = Text; Text = ””;

yield WaitForSeconds (2); TypeText (); }

function Update () {

if(Input。GetKeyDown(KeyCode。Escape)){ screnbutton=true;}

if( Text == ”This is zcx first project! I can do it.\" ){ Text = \"”; TypeText (); }

if(Input.GetMouseButtonDown(0)){ Text = \"\";

for (var c : char in Input.inputString) { // Backspace — Remove the last character if (c == \"\\b\") {

if (guiText。text。Length != 0)

guiText.text = guiText。text.Substring(0, guiText。text。Length - 1); }

// End of entry

else if (c == \"\\n”) {

print (\"User entered his name: \" + guiText.text); }

// Normal text input - just append to the end else {

guiText.text += c; }

} } }

function OnGUI(){ if(screnbutton==true){

if(GUI。Button(Rect(Screen.width/2—30,Screen。height/2—30,60,50),\"scene1”)){ print(\"you click Scene 1”); Application.LoadLevel (1); screnbutton=false;

}else if(GUI.Button(Rect(Screen。width/2—30,Screen。height/2+30,60,50),\"scene2”)){ print(”you click Scene 2”); Application.LoadLevel (2); screnbutton=false;

}else if(GUI。Button(Rect(Screen。width/2—30,Screen.height/2+90,60,50),”scene3\")){ print(”you click Scene 3”);

Application.LoadLevel (3); screnbutton=false;

}else if(GUI。Button(Rect(Screen。width/2-30,Screen。height/2+150,60,50),\"Quit\")){ print(\"you click Quit\"); Application。Quit(); } } //GUI.Button (Rect (0, 0, 100, 20), ”Click Me”); GUI.Button (Rect (0, 0, 100, 20), GUIContent (”Click me\",\"This is the tooltip”)); GUI。Label (Rect (0, 20, 100, 40), GUI.tooltip);

allOptions = GUI.Toggle (Rect (40,40,150,20), allOptions, ”Edit All Options”); GUI。enabled = allOptions; extended1 = GUI。Toggle (Rect (60,60,130,20), extended1, \"Extended Option 1\"); extended2 = GUI。Toggle (Rect (60,80,130,20), extended2, ”Extended Option 2\"); GUI.enabled = true; if (GUI。Button (Rect (40, 100, 150, 20), \"Ok\")) print (”user clicked ok”);

GUI。BeginGroup (new Rect (Screen.width / 2 — 400, Screen.height/2-300,800,600)); GUI.Box (new Rect (0,0,800,600),

\"This box is now centered!-here you would put your main menu\"); GUI。EndGroup ();

GUI.Label (Rect(250,75,250,25),\"Please introduce your objec!”); GUI.Box (Rect(250,100,250,25),Text); }

function TypeText () {

for (var letter in word。ToCharArray()) {//做一个循环,定义一个变量letter逐次等于word中的每一个字符

Text += letter;//把这些字赋值给Text

if (sound)//控制声音,出现一个字,发一个声音 audio.PlayOneShot (sound); yield WaitForSeconds (letterPause); } }

主板游戏系列程序:

CameraMoveRotate(第一视角界面场景自控程序)

使用时点击鼠标右键可以自由转换视角.同时点击AWSD键可以控制前进后退,向左向右.C#程序。

using UnityEngine;

using System.Collections;

/// MouseLook rotates the transform based on the mouse delta.

/// Minimum and Maximum values can be used to constrain the possible rotation

/// To make an FPS style character: /// - Create a capsule.

/// - Add a rigid body to the capsule

/// — Add the MouseLook script to the capsule。

/// -> Set the mouse look to use LookX. (You want to only turn character but not tilt it) /// - Add FPSWalker script to the capsule

/// - Create a camera. Make the camera a child of the capsule. Reset it's transform。 /// — Add a MouseLook script to the camera.

/// —> Set the mouse look to use LookY。 (You want the camera to tilt up and down like a

head. The character already turns.)

[AddComponentMenu(”Camera-Control/Mouse Look\")] public class CameraMoveRotate : MonoBehaviour {

public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } public RotationAxes axes = RotationAxes。MouseXAndY; public float sensitivityX = 15F; public float sensitivityY = 15F; public float minimumX = -360F; public float maximumX = 360F; public float minimumY = -60F; public float maximumY = 60F;

public float moveSpeed = 5。0F; float rotationX = 0F; float rotationY = 0F;

Quaternion originalRotation;

void Update () { //鼠标控制的转向 if( !Input.GetMouseButton(1) ){ return; }else{ if (axes == RotationAxes。MouseXAndY) { // Read the mouse input axis rotationX += Input。GetAxis(\"Mouse X\") * sensitivityX; rotationY += Input.GetAxis(”Mouse Y”) * sensitivityY; rotationX = ClampAngle (rotationX, minimumX, maximumX); rotationY = ClampAngle (rotationY, minimumY, maximumY); Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up); Quaternion yQuaternion = Quaternion。AngleAxis (rotationY, —Vector3。right); transform。localRotation = originalRotation * xQuaternion * yQuaternion;

else if (axes == RotationAxes。MouseX) { rotationX += Input.GetAxis(\"Mouse X”) * sensitivityX; rotationX = ClampAngle (rotationX, minimumX, maximumX);

Quaternion xQuaternion = Quaternion。AngleAxis (rotationX, Vector3.up); transform.localRotation = originalRotation * xQuaternion; } else

{ rotationY += Input。GetAxis(”Mouse Y\") * sensitivityY; rotationY = ClampAngle (rotationY, minimumY, maximumY);

Quaternion yQuaternion = Quaternion。AngleAxis (—rotationY, Vector3。transform.localRotation = originalRotation * yQuaternion;

right); }

}

} }

//键盘控制的运动

float x = Input.GetAxis(\"Horizontal\") * Time。deltaTime * moveSpeed; float z = Input。GetAxis(\"Vertical”) * Time。deltaTime * moveSpeed; transform。Translate(x, 0, z);

void Start () { // Make the rigid body not change rotation if (rigidbody) rigidbody。freezeRotation = true; originalRotation = transform.localRotation; }

public static float ClampAngle (float angle, float min, float max) { if (angle 〈 —360F) angle += 360F; if (angle > 360F) angle -= 360F; return Mathf。Clamp (angle, min, max); }

Unity3d闪烁灯光脚本

也可以用unity3d做舞厅效果。。把脚本扔给灯光就可以了.

1. using UnityEngine;

2. 3. 4. 5. 6.

using System.Collections;

[RequireComponent( typeof( Light ) )] public class flickeringLight : MonoBehaviour {

// Flickering Styles

7. public enum flickerinLightStyles { CampFire = 0, Fluorescent = 1 };

8. public flickerinLightStyles flickeringLightStyle = flickerinLightStyles。CampFire; 9. // Campfire Methods

10. public enum campfireMethods { Intensity = 0, Range = 1, Both = 2 }; 11. public campfireMethods campfireMethod = campfireMethods.Intensity; 12. // Intensity Styles

13. public enum campfireIntesityStyles { Sine = 0, Random = 1 };

14. public campfireIntesityStyles campfireIntesityStyle = campfireIntesityStyles.Random; 15. // Range Styles

16. public enum campfireRangeStyles { Sine = 0, Random = 1 };

17. public campfireRangeStyles campfireRangeStyle = campfireRangeStyles.Random; 18. // Base Intensity Value

19. public float CampfireIntensityBaseValue = 0。5f; 20. // Intensity Flickering Power

21. public float CampfireIntensityFlickerValue = 0.1f; 22. // Base Range Value

23. public float CampfireRangeBaseValue = 10.0f; 24. // Range Flickering Power

25. public float CampfireRangeFlickerValue = 2.0f; 26.

27. // If Style is Sine

28. private float CampfireSineCycleIntensity = 0.0f; 29. private float CampfireSineCycleRange = 0。0f; 30. // ”Glow” Speeds

31. public float CampfireSineCycleIntensitySpeed = 5.0f; 32. public float CampfireSineCycleRangeSpeed = 5.0f; 33. public float FluorescentFlickerMin = 0.4f; 34. public float FluorescentFlickerMax = 0.5f; 35. public float FluorescentFlicerPercent = 0。95f; 36. // NOT IMPLEMENTED YET !!!!

37. public bool FluorescentFlickerPlaySound = false; 38. public AudioClip FluorescentFlickerAudioClip; 39. // ——-—-—-—-—--———-———-—-—- 40.

41.

42. // Use this for initialization 43. void Start () { 44.

45. } 46.

47. // Update is called once per frame 48. void Update () {

49. switch( flickeringLightStyle ) 50. {

51. // If Flickering Style is Campfire

52. case flickerinLightStyles.CampFire:

53. // If campfire method is Intesity OR Both

54. if( campfireMethod == campfireMethods。Intensity || campfireMethod

== campfireMethods。Both ) 55. {

56. // If Intensity style is Sine

57. if( campfireIntesityStyle == campfireIntesityStyles.Sine ) 58. {

59. // Cycle the Campfire angle

60. CampfireSineCycleIntensity += CampfireSineCycleIntensitySpeed;

61. if( CampfireSineCycleIntensity > 360.0f ) CampfireSineCycleIntensity = 0。0f;

62. // Base + Values

63. light.intensity = CampfireIntensityBaseValue + ( ( Mathf.Sin

( CampfireSineCycleIntensity * Mathf.Deg2Rad ) * ( CampfireIntensityFlickerValue / 2.0f ) ) + ( CampfireIntensityFlickerValue / 2.0f ) );

64. }

65. else light。intensity = CampfireIntensityBaseValue + Random.Range( 0。

0f, CampfireIntensityFlickerValue ); 66. }

67. // If campfire method is Range OR Both

68. if( campfireMethod == campfireMethods。Range || campfireMethod ==

campfireMethods.Both ) 69. {

70. // If Range style is Sine

71. if( campfireRangeStyle == campfireRangeStyles。Sine ) 72. {

73. // Cycle the Campfire angle

74. CampfireSineCycleRange += CampfireSineCycleRangeSpeed;

75. if( CampfireSineCycleRange 〉 360.0f ) CampfireSineCycleRange = 0。

0f;

76. // Base + Values

77. light。range = CampfireRangeBaseValue +

( ( Mathf.Sin( CampfireSineCycleRange * Mathf.Deg2Rad ) * ( CampfireSineCycleRange / 2。0f ) ) + ( CampfireSineCycleRange / 2.0f ) ); 78. }

79. else light。range = CampfireRangeBaseValue + Random。Range( 0.0f,

CampfireRangeFlickerValue ); 80. } 81. break;

82. // If Flickering Style is Fluorescent 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. }98. 99. } 100. } if( Random.Range( 0.0f, 1。0f ) 〉 FluorescentFlicerPercent ) {

light。intensity = FluorescentFlickerMin; // Check Audio - NOT IMPLEMENTED YET if( FluorescentFlickerPlaySound ) {

} }

else light。intensity = FluorescentFlickerMax; break; // You should not be here。 break; case flickerinLightStyles.Fluorescent:

default:

因篇幅问题不能全部显示,请点此查看更多更全内容