资源描述
场景转换:
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", "This box has a tooltip"));
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.right);
transform.localRotation = originalRotation * yQuaternion;
}
}
//键盘控制的运动
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. using System.Collections;
3. [RequireComponent( typeof( Light ) )]
4. public class flickeringLight : MonoBehaviour
5. {
6. // 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.
展开阅读全文