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:
因篇幅问题不能全部显示,请点此查看更多更全内容