u3d常用代码小集合
U3D学习
入门主要英文Cube 正方形 Sphere 球体 Capsule 胶囊体 Cylinder 圆柱体Plane 地面 Material 材质球 Texture纹理图 Albedo 纹理贴图Tiling 贴瓷砖:使贴图分块显示Camera(摄像机)要改变背景颜色在Camera模块 Clear flags:选择模式 Background:选择颜色Light(灯光): Directional Light(平行灯)Intensity:设置灯光强度Shadow Type:阴影类型 3种Point Light(点光源)Range:范围设置Spotlight(聚光灯)Spot Angle:照射角度Transform(交换)Component(组件)Position(位置) Rotation(旋转) Scale(缩放)Component->physics->Rigidbody 刚体Mass(质量) Drag(空气阻力)Angular(角阻力):受扭曲力时候的空气阻力,0时表示无阻力,值很大时物体会停止运动Use Gravity(使用重力)Box Collider (盒子碰撞体)Center (中心点):设置Box Collider的中心点Size (大小):设置Box Collider的大小Sphere Collider(球体碰撞体)Radius(半径):设置 Sphere Collider的半径Capsule Collider(胶南碰撞体)Height (高度):设置 Capsule Collider的高度Direction(方向):设置Capsule Collider的高度方向Mesh Collider(网格碰撞体)快捷键Ctrl+Shift+F :将摄像头移动到当前视角代码学习 P是字段 C 是类获取键盘输入Input.GetKey(); //按下某个键后,持续返回tureInput.GetKeyDown(); //按下某个键的瞬间,返回tureInput.GetKeyUp(); //松开某个键得而瞬间,返回ture返回类型:bool类型参数:KeyCode枚举(Enum)KeyCode:键码,保存物理键盘按键“索引码”获取鼠标输入相关代码Input.GetMouseButton(); //按下某键后,持续返回tureInput.GetMouseButtonDoen();//按下某键的瞬间,返回tureInput.GetMouseButtonUp(); //按下某键的瞬间,返回ture返回类型:bool类型参数:鼠标按键索引值,0->左键 ,1->右键,2->中键代码public class studentmove: MonoBehaviour{private Transform m_Transform;void Start () {m_Transform=gameObject.GetComponent<Transform>();//获取的是组件的类型}void Update () {if(Input.GetKey (KeyCode.W)){m_Transform.Translate (Vector3.forward * 0.1f, Space.Self);}if(Input.GetKey (KeyCode.S)){m_Transform.Translate (Vector3.back * 0.1f, Space.Self);}if(Input.GetKey (KeyCode.A)){m_Transform.Translate (Vector3.left * 0.1f, Space.Self);}if(Input.GetKey (KeyCode.D)){m_Transform.Translate (Vector3.right * 0.1f, Space.Self);}if(Input.GetKeyDown (KeyCode.Space)){m_Transform.Translate (Vector3.up * 0.5f, Space.Self);}if(Input.GetKeyUp (KeyCode.Space)){m_Transform.Translate (Vector3.down * 0.5f, Space.Self);}}Rigidbody.MovePosition(vector3):使用刚体移动物体位置发生事件:①按世界坐标发生移动②会发生物理碰撞MovePosition中的Vector3要使用“当前位置”+方向的方式用Transform.postion定义Vecotr:改为当前物体位置public class RigidbodyMove: MonoBehaviour{private Rigidbody m_Rigidbody;private Transform m_Transform;void Start () {m_Rigidbody = gameObject.GetComponent<Rigidbody> ();m_Transform = gameObject.GetComponent<Transform> ();}void Update () {if(Input.GetKey(KeyCode.W)){m_Rigidbody.MovePosition (m_Transform.position + Vector3.forward * 0.2f);}if(Input.GetKey(KeyCode.S)){m_Rigidbody.MovePosition (m_Transform.position + Vector3.back * 0.2f);}if(Input.GetKey(KeyCode.A)){m_Rigidbody.MovePosition (m_Transform.position + Vector3.left * 0.2f);}if(Input.GetKey(KeyCode.D)){m_Rigidbody.MovePosition (m_Transform.position + Vector3.right * 0.2f);}if(Input.GetKey(KeyCode.Space)){m_Rigidbody.MovePosition (m_Transform.position + Vector3.up);}}}AddForce(vector,ForceMode ):给刚体一个力,按世界坐标的方向移动使用| Rigidbody.AddFoce(Vector3,ForceMode);Vector:力的方向和大小ForceMode:力的模式[enum模式]Accletration:加速度Force:此模式一般用于真实物理Impulse:(冲击力)常用于瞬间发生的力VelocityChange:速度变化AddRelativeForce(vector3,ForceMode) : 给刚体一个力,按”自身坐标系”进行运动Edit->PorjectSeeting->Time面板中FixedUpDate(固定更新方法):所有固定物理方法都要写在此中,物理操作不能写在UpDate中,不然会造成卡顿。
Unity3D一些比较基本的脚本及组件(C#)
Unity3D⼀些⽐较基本的脚本及组件(C#)通过代码创造图形//创建顶点,创建序列,创建⽹格,然后把⽹格赋给⽹格序列器//draw a trianglevoid Start () {Vector3[] vs = new Vector3[3];vs[0] = new Vector3(0,0,0);vs[1] = new Vector3(1,0,0);vs[2] = new Vector3(0,1,0);int[ts] = new int[3];ts[0] = 0;ts[1] = 1;ts[2] = 2; //要注意顺序,要⽤左⼿系,法线向外,拇指向外Mesh mesh = new Mesh();GetComponet<MeshFilter>().mesh = mesh;mesh.vertices = vs; // vertices⾄⾼点mesh.triangles = ts;}///* */////draw a triangle程序封装代码public GameObject Create Triangle(){GameObject obj = new GameObject(“Triangle”);MeshFilter mf = obj.AddComponet<MeshFilter>();obj.AddComponent<MeshRender>();Mesh mesh = new Mesh();mesh.vertices = nes[]{new Vector3(0,0,0);new Vector3(3,0,0);new Vector3(0,3,0);};mesh.triangles = new[]{0,2,1//不⽤分号,初始化系,直接把初始值放进去};mf.mesh = mesh;return obj;}Camera 的性质与使⽤public CameraClearFlags clearFlags; //clearFlags是相机清除表识public ColorbackgroundColor; //给定他的颜⾊,背景⾊,只有单⾊才起作⽤public int cullingMask; //提出掩码public class chapter6 : MonoBehaviour{public GameObject cube;void Start(){ber = 9; //把cube设置在第9层Camera cam = this.GetComponet<Camera>()’cam.clearFlags = CameraClearFlags.SolidColor;cam.backgroundColor = new Vector3(1,0,0,0); //表⽰设置颜⾊cam.cullingMask = 9; //表⽰第9层的都不会被渲染出来,也就是说cube不会显⽰出来}}//CameraClearFlags是⼀个枚举类型,有以下四个成员:solidColor 表⽰⽤backgroundColor所制定的填充背景skybox 表⽰天空盒,模拟天空效果填充Depth 只是清除深度缓存,保留上⼀帧所使⽤的颜⾊Nothing 不进⾏背景清除,这种情况在游戏和模拟应⽤中⽐较少⽤public bool orthographic;//⽤于读取和设定相机的投影⽅式,如果为true则表⽰是正交投影,否则为透视投影;正交投影可⽤于UI和2D开发public float orthographicSize; //⽤以指定正交投影的视景体的垂直⽅向尺⼨的⼀半public Rect rect; //相机对应的视⾓⼝的位置和⼤⼩,rect以单位化形式制定相机视⼝在屏幕中的位置和⼤⼩,位置⼤⼩取值范围为0~1,满屏为1Camera main = this.gameObject.GetComponet<Camera>();this.gameObject.SetActive(false);Camera cam0 = camGO0.AddComponet<Camera>();cam0.orthographic = true;cam0.transform.position = main.transform.position;cam0.transform.rotation = main.transform. rotation;cam0.orthographicSize = 2.0f; //指物体渲染后显⽰的⼤⼩远近,数值越⼤,相机视⼝越靠近该物体,从⽽该物体显⽰出来的更加⼤cam0.rect = new Rect(0f,0f, 0.5f, 0.5f); //前两个参数是camera的位置,后⾯两个参数设置相机⼤⼩(0.5f,0.5f)表⽰占x轴的⼆分之⼀,y轴的⼆分之⼀,所以总共占渲染窗⼝的四分之⼀Camera cam1 = camGO1.AddComponet<Camera>();cam1.orthographic = true;cam1.transform.position = main.transform.position;cam1.transform.rotation = main.transform. rotation;cam1.orthographicSize = 7.0f;cam1.rect = new Rect(0.5f, 0.5f, 0.5f, 0.5f);}Material,Shader,Texture(材质,着⾊器,纹理)光照、纹理等让物体更加的真实。
Unity3D常用代码总结
import System;
import System.Runtime.InteropServices;
@DllImport("user32.dll")
public static function MessageBox(Hwnd : int,text : String,Caption : String,iType : int) : int {};
tempData._iUser.Ceshi2 = "?";
tempData._iUser.Ceshi3 = 0;
tempData._iUser.Ceshi4 = 0;
var writer : StreamWriter;
var t : FileInfo = new FileInfo(_FileLocation+"/"+ _FileName);
GUI.SelectionGrid(Rect(1,201,190,20),2,["Selection","Grid","select3"],3); //10
GUI.HorizontalSlider(Rect(1,221,180,20),3.0,0,10.0); //11
GUI.VerticalScrollbar(Rect(1,241,20,100),3.0,1,0.0,10.0); //12
}
private var c1 : String;
private var c2 : String;
private var c3 : float;
private var c4 : int;
Unity3DC#脚本鼠标旋转缩放平移场景代码
Unity3DC#脚本鼠标旋转缩放平移场景代码Unity3D C#脚本鼠标旋转缩放平移场景代码using UnityEngine;using System.Collections;[AddComponentMenu("Camera-Control/3dsMax Camera Style")]public class maxCamera : MonoBehaviour{public Transform target;public Vector3 targetOffset;public float distance = 5.0f;public float maxDistance = 20;public float minDistance = .6f;public float xSpeed = 200.0f;public float ySpeed = 200.0f;public int yMinLimit = -80;public int yMaxLimit = 80;public int zoomRate = 40;public float panSpeed = 0.3f;public float zoomDampening = 5.0f;private float xDeg = 0.0f;private float yDeg = 0.0f;private float currentDistance;private float desiredDistance;private Quaternion currentRotation;private Quaternion desiredRotation;private Quaternion rotation;private Vector3 position;void Start() { Init(); }void OnEnable() { Init(); }public void Init(){//If there is no target, create a temporary target at 'distance' from the cameras current viewpointif (!target){GameObject go = new GameObject("Cam Target");go.transform.position = transform.position + (transform.forward * distance);target = go.transform;}distance = Vector3.Distance(transform.position, target.position);currentDistance = distance;desiredDistance = distance;//be sure to grab the current rotations as starting points.position = transform.position;rotation = transform.rotation;currentRotation = transform.rotation;desiredRotation = transform.rotation;xDeg = Vector3.Angle(Vector3.right, transform.right );yDeg = Vector3.Angle(Vector3.up, transform.up );}void LateUpdate(){// If Control and Alt and Middle button? ZOOM!if (Input.GetMouseButton(2) && Input.GetKey(KeyCode.LeftAlt) && Input.GetKey(KeyCode .LeftControl)){desiredDistance -= Input.GetAxis("Mouse Y") * Time.deltaTime * zoomRate*0.125f * Mathf.Abs(desiredDistance);}// If middle mouse and left alt are selected? ORBITelse if (Input.GetMouseButton(2) && Input.GetKey(KeyCode.LeftAlt)){xDeg += Input.GetAxis("Mouse X") * xSpeed * 0.02f;yDeg -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;////////OrbitAngle//Clamp the vertical axis for the orbityDeg = ClampAngle(yDeg, yMinLimit, yMaxLimit);// set camera rotationdesiredRotation = Quaternion.Euler(yDeg, xDeg, 0);currentRotation = transform.rotation;rotation = Quaternion.Lerp(currentRotation, desiredRotation, Time.deltaTime * zoomDampening);transform.rotation = rotation;}// otherwise if middle mouse is selected, we pan by way of transforming the target in screenspaceelse if (Input.GetMouseButton(2)){//grab the rotation of the camera so we can move in a psuedo local XY spacetarget.rotation = transform.rotation;target.Translate(Vector3.right * -Input.GetAxis("Mouse X") * panSpeed);target.Translate(transform.up * -Input.GetAxis("Mouse Y") *panSpeed, Space.World);}////////Orbit Position// affect the desired Zoom distance if we roll the scrollwheel desiredDistance -= Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * zoomRate * Mathf.Abs(desiredDistance);//clamp the zoom min/maxdesiredDistance = Mathf.Clamp(desiredDistance, minDistance, maxDistance);// For smoothing of the zoom, lerp distancecurrentDistance = Mathf.Lerp(currentDistance, desiredDistance, Time.deltaTime * zoomDampening);// calculate position based on the new currentDistanceposition = target.position - (rotation * Vector3.forward * currentDistance + targetOffset);transform.position = position;}private static float ClampAngle(float angle, float min, float max){if (angle < -360)angle += 360;if (angle > 360)angle -= 360;return Mathf.Clamp(angle, min, max);}}。
Unity3D简单的怪物AI代码(C#脚本)
Unity3D简单的怪物AI代码(C#脚本)using UnityEngine;using System.Collections;public class BoosAI : MonoBehaviour{//敌人状态//敌人站立状态public const int STATE_STAND = 0;//敌人行走public const int STATE_WALK = 1;//敌人奔跑状态public const int STATE_RUN = 2;//记录敌人的当前状态private int enemyState;//主角对象private GameObject hero;//备份上一次的敌人思考时间private float backUptime;//敌人思考下一次行为的时间public const int AI_THINK_TIME = 2;//敌人的巡逻范围public const int AI_ATTACK_DISTANCE = 10;// Use this for initializationvoid Start(){//得到主角对象hero = GameObject.Find("Cube");//设置敌人的默认状态站立enemyState = STATE_STAND;}// Update is called once per framevoid Update(){//判断敌人与主角的距离if (Vector3.Distance(transform.position, hero.transform.position) <(AI_ATTACK_DISTANCE)){//敌人进入奔跑状态gameObject.animation.Play("run");enemyState = STATE_RUN;//设计敌人面朝主角方向transform.LookAt(hero.transform);}//敌人进入巡逻状态else{//计算敌人的思考时间if (Time.time - backUptime >= AI_THINK_TIME){//敌人开始思考backUptime = Time.time;//取得0~2之间的随机数int rand = Random.Range(0,2);if (rand == 0){//敌人进入站立状态gameObject.animation.Play("idle");enemyState = STATE_STAND;}else if (rand == 1){//敌人进入站立状态//敌人随机旋转角度Quaternion rotate = Quaternion.Euler(0,Random.Range(1,5) * 90,0);//1秒内完成敌人旋转transform.rotation = Quaternion.Slerp(transform.rotation,rotate,Time.deltaTime * 1000);//播放行走动画gameObject.animation.Play("walk");enemyState = STATE_WALK;}}}switch (enemyState){case STATE_STAND:break;case STATE_WALK://敌人行走transform.Translate(Vector3.forward * Time.deltaTime);break;case STATE_RUN://敌人朝向主角奔跑if (Vector3.Distance(transform.position, hero.transform.position) > 3){transform.Translate(Vector3.forward * Time.deltaTime * 3);}break;}}}。
Unity3D常用代码
} else {
if ((Screen.width / (float)Screen.height) < (screenSize.x / screenSize.y)) {
if (scaleType == ScreenScaleType.Fit) {
GUI自适应屏幕
public override void GUIDraw (){
//开始缩放
//先定义一个标准屏幕大小代码按照这个分辨率写,这里屏是800*480象素,GUI矩阵再乘以新的缩放矩阵实现GUI的缩放,GUI.matrix*=scaleMatrix;
ScreenScaleUtil.BeginScreenScale ();
}
public static void EndScreenScale(){
if(lstMats.Count<=0)
return;
GUI.matrix=lstMats[lstMats.Count-1];
lstMats.RemoveAt(lstMats.Count-1);
}
}
1 GUI汇总
function OnGUI() {
GUI.matrix*=ScaleMatrix;
}
public static void BeginScreenScale(ScreenScaleType scaleType ){
if(lstMats.Count>0){s.Add(GUI.matrix);
GUI.matrix*=GetScreenScaleMatrix(screenSize,scaleType);
screenSize = new Vector2 (800, 480);
Unity3d 我的代码
FoxPDF TXT转换成PDF格式转换器 3.0 (未注册) | http://www. /TXT-to-PDF-Converter/TXT-to-PDF-Converter.html
// 向下箭头 if (Input.GetKey(KeyCode.DownArrow)) { movev += m_speed * Time.deltaTime; } // 向左 if (Input.GetKey(KeyCode.LeftArrow)) { moveh += m_speed * Time.deltaTime; } // 向右 if (Input.GetKey(KeyCode.RightArrow)) { moveh -= m_speed * Time.deltaTime; } // this即Player this.transform.Translate(new Vector3(moveh, 0, movev)); /** * 物理转换器 * this.transform调用游戏体的Transform组件 * Transform包装移动、旋转、缩放 * Vector3(x, y, z) **/ } } 2)创建子弹控制脚本 using UnityEngine; using System.Collections; [AddComponentMenu ("MyGame/Rocket") ] /** * 子弹 **/ public class Rocket : MonoBehaviour { public float m_speed = 10; public float m_liveTime = 1; public float m_power = 1.0f; // 速度 // 生命 // 威力 // 没渲染一帧,生命值即减少一定时间
Unity3D常用代码集合
}
}
2、检测输入
function Update(){
if(Input.GetButtonUp("Jump")){
Debug.Log("We Have Hit the Space Bar!");
}
}
3、销毁对象
function Start(){
Destroy(gameObject.Find("Box"),3);
}
建立JAVA,把代码拖入到空GameJect上,然后把Prefab拖入到公共变量上。
5、简易定时器
varmyTimer:float=5.0;
function Update(){
if(myTimer>0){
myTimer-=Time.deltaTime;
}
if(myTimer<=0){
Debug.Log("GAME OVER");
Unity3D常用代码集合
1、基本碰撞检测代码
function OnCollisionEnter(theCollision:Collision){
if(=="Floor"){
Debug.Log("Hit the floor");
}elseif(=="Wall"){
}
}
6、物体在屏幕上移动
varspeed:float=5.0;
function Update(){
transform.Translate(Vector3(0,0,speed)*Time.deltaTime);
Unity3DC#学习List数据类型的使用
Unity3DC#学习List数据类型的使⽤List<T>类是ArrayList 类的泛型等效类。
该类使⽤⼤⼩可按需动态增加的数组实现泛型的好处:它为使⽤ c#语⾔编写⾯向对象程序增加了极⼤的效⼒和灵活性。
不会强⾏对值类型进⾏装箱和拆箱,或对引⽤类型进⾏向下强制类型转换,所以性能得到提⾼。
⼀、 List的基础、常⽤⽅法: 1、List<T> mList = new List<T>(); a.T为列表中元素类型,现在以string类型作为例⼦ 如: List<string> mList = new List<string>(); b.增加元素:List. Add(T item) 如:mList.Add("进击的⽪卡丘"); c.插⼊元素:Insert(int index, T item); 在index位置添加⼀个元素 如:mList.Insert(1, "AdvancePikachu"); d.删除元素: List. Remove(T item) 删除⼀个值 如:mList.Remove("进击的⽪卡丘"); List. RemoveAt(int index); 删除下标为index的元素 如:mList.RemoveAt(0); List. RemoveRange(int index, int count); 从下标index开始,删除count个元素 如:mList.RemoveRange(3, 2); //超出删除的范围会出错 注:删除某元素后,其后⾯的元素下标⾃动跟进 e.判断是否存在List:List. Contains(T item) 得到的结果是返回true或false f.排序: List. Sort () //默认是元素第⼀个字母按升序 List. Reverse () //给List⾥⾯元素顺序反转 g.遍历List中元素: fo reach (T element in mList) T的类型与mList声明时⼀样 { Console.WriteLine(element); } h.List清空:List. Clear () 如:mList.Clear(); i.获得List中元素数⽬: 如:List. Count 返回int值 j.添加数组进List: 如:string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", " "Locu" }; mList.AddRange(temArr);2、List<T> testList =new List<T> (IEnumerable<T> collection); 以⼀个集合作为参数创建List如: string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" }; List<string> testList = new List<string>(temArr);3、List与数组的相互转换 a.从string[]转List<string> 如:string[] str={“1”,”2”}; List <string> list=new List<string>(str); b.从List<string>转string[] 如:List<string> list=new List<string>; String[] str=list.ToArray(); c.ViewState["idlist"]转换成List<> 如:List<int> idlist=(List<int>)ViewState["idlist"]。
unity3d功能脚本大全
1.右键菜单function OnGUI(){if(Input.GetMouseButton(1)){GUILayout.BeginArea (new Rect (Input.mousePosition.x,Screen.height-Input.mousePosition.y,200,200));GUILayout.Box("This is a Context Menu");GUILayout.EndArea ();}}/*if(Input.GetMouseButton(0))Debug.Log("Pressed left click.");if(Input.GetMouseButton(1))Debug.Log("Pressed right click.");if(Input.GetMouseButton(2))Debug.Log("Pressed middle click.");*/2.用辅助键/双键控制视角using UnityEngine;using System.Collections;public class ControlCamerMove : MonoBehaviour {void Update () {if(Input.GetKeyDown(KeyCode.LeftControl)){this.GetComponent<MouseLook>().enabled = false;}if(Input.GetKeyUp(KeyCode.LeftControl)){this.GetComponent<MouseLook>().enabled = true;}}}3.与网页交互-打开网页function OnGUI()bel("当前场景:"+ Application.loadedLevelName);if(GUILayout.Button("打开网页"))Application.OpenURL("");}4.在unity中播放视频--绘制#pragma strictvar movTexture:MovieTexture;function Start (){movTexture.loop = true;}function OnGUI(){GUI.DrawTexture(new Rect (0,0,Screen.width,Screen.height),movTexture,ScaleMode.StretchToFill);if(GUILayout.Button("播放/继续")){if (!movTexture.isPlaying){movTexture.Play();}}if(GUILayout.Button("暂停播放")){movTexture.Pause();}if(GUILayout.Button("停止播放")){ 贴图movTexture.Stop();}}5.在unity中播放视频--作为plane的材#pragma strictvar movTexture:MovieTexture;function Start (){this.renderer.material.mainTexture = movTexture;movTexture.loop = true;}function OnGUI(){if(GUILayout.Button("播放/继续")){if (!movTexture.isPlaying){movTexture.Play();}}if(GUILayout.Button("暂停播放")){movTexture.Pause();}if(GUILayout.Button("停止播放")){movTexture.Stop();}}6.用材质偏移模拟水流效果using UnityEngine;using System.Collections;public class Whatflow : MonoBehaviour {public float scrollSpeed=3;void Update () {float offset = Time.time*scrollSpeed;renderer.material.SetTextureOffset("_MainTex",new Vector2(0,offset));}}7.从网页上获取一张图片并动态使用var url = "/attachments/images/201011/20101110/20101109_da85542f8635f3c5 b963vil1B8qeeS9O.jpg";function Start () {var www : WWW = new WWW (url);//定义www为WWW类型并且等于被下载的内容。
Unity3D常用脚本
GUI.Box (Rect (5, 300, 110, 75), GUIContent ("Box", "This box has a tooltip"));
GUI.Button (Rect (10, 230, 100, 20), "No tooltip here");
Application.Quit();
}
}
心得:
场景转换时,这个程序贴在按钮界面场景中。在Build Setting(导出)(在File下)菜单中加入所需场景。
0为按钮界面。可以无限增加场景。
}else if(GUI.Buttont/2-130,60,50),"Scene2")){
鼠标碰触后显示说明文字。
function OnGUI () {
GUI.Button (Rect (0, 0, 100, 20), GUIContent ("Click me", "This is the tooltip"));
bel (Rect (0, 40, 100, 40), GUI.tooltip);
GUI.enabled = allOptions;
extended1 = GUI.Toggle (Rect (20,70,130,20), extended1,
"Extended Option 1");
extended2 = GUI.Toggle (Rect (20,90,130,20), extended2,
Application.LoadLevel (2);
screenbutton = false;
unity3d常用属性汇总
unity3d常⽤属性汇总unity常⽤的是C#语⾔。
⽽C#语⾔有Attribute属性。
特别强⼤。
所以unity开发的时候。
可以在变量加Attribute属性来达到开发⼈员想要的效果 RequireComponent:约束组件[RequireComponent(typeof(Rigidbody))]当附加该组件的时候。
会强制⾃动添加组件typeof(Rigidbody)RequireComponent 约束的组件。
是不能删除的。
除⾮先删除当前脚本[RequireComponent(typeof(Rigidbody), typeof(BoxCollider))] public class prot : MonoBehaviour{/** SerializeField序列化字段。
* Range:该字段值的范围。
*/[SerializeField, Range(0, 5)] int cont;/** 可以适⽤于多个变量**/[SerializeField, Range(1, 5)]int cont1, sum1;/*数组*/[SerializeField, Range(1, 5)]int[] array;/** Tooltip:⿏标放到字段上显⽰提⽰ */[SerializeField, Tooltip("年龄")]int age;/** Space:设置字段和字段之间的间距 * 即。
距上个字段的间距*/[SerializeField, Space(60)]string name;/*Header:字段的头部。
也可以⽤作显⽰*/[SerializeField, Header("⽤户地址")]string address;/*Multiline:多⾏⽂本框*/[SerializeField, Multiline(5)]string message;/** TextArea:超过了最⼤值⾏。
unity3d 列表的linq用法
unity3d 列表的linq用法LINQ是Language-Integrated Query(语言集成查询)的缩写,它是一种强大的查询语言,用于在数据集合中检索、过滤和操作数据。
在Unity3D中,LINQ可用于操作游戏对象列表、组件列表、组件属性等。
下面将介绍Unity3D中列表的LINQ用法。
在Unity3D中,可以使用LINQ查询游戏对象列表、组件列表等。
以下是一些常见的LINQ用法示例:1. 查询游戏对象列表:```c# GameObject[] gameObjects =GameObject.FindObjectsOfType<GameObject>();IEnumerable<GameObject> filteredObjects =gameObjects.Where(obj => == "MyGameObject"); ```上述代码中,使用`FindObjectsOfType<GameObject>()`方法获取所有游戏对象,并使用LINQ查询过滤出名称等于"MyGameObject"的游戏对象。
2. 查询组件列表:```c# Component[] components =gameObject.GetComponentsInChildren<Component>(); IEnumerable<Component> filteredComponents =components.Where(comp => == "MyComponent"); ```上述代码中,使用`GetComponentsInChildren<Component>()`方法获取指定游戏对象子对象下的所有组件,并使用LINQ查询过滤出名称等于"MyComponent"的组件。
Unity3d 常用代码集
1、将相同类型对象(名字不同)Tag改为一致,查找group[csharp]view plain copy1.<span style="white-space:pre"> </span>public GameObject[] customerArray;2.3.void Awake () {4. <span style="white-space:pre"> </span>customerArray = GameObject.FindGameObjectsWithTag("Customer");5. Debug.LogError("长度=" +customerArray.Length);6.foreach(GameObject c in customerArray){7. Debug.LogWarning();8. }9.2、对象动态添加脚本组件[csharp]view plain copy1.// WaiterID 脚本名称2.customer.AddComponent<WaiterID>();3、延时执行HideLevelImage()方法名,DelayTime 延迟时间2f[csharp]view plain copy1.Invoke("HideLevelImage", DelayTime);4、不销毁[csharp]view plain copy1.//Sets this to not be destroyed when reloading scene2. DontDestroyOnLoad(gameObject);5、添加引用脚本组件[csharp]view plain copy1.//Store a reference to our BoardManager which will set up the level. [csharp]view plain copy1.private BoardManager boardScript;2.void Awake(){3.//Get a component reference to the attached BoardManager script4. boardScript = GetComponent<BoardManager>();5.}6、实例化 Instantiate[csharp]view plain copying UnityEngine;ing System.Collections;3.4.public class Launcher : MonoBehaviour {5.6.public GameObject ballPrefab;7.// Use this for initialization8.void Start () {9.10. }11.12.// Update is called once per frame13.void Update () {14.// 1 : 鼠标右键15.if(Input.GetMouseButtonDown(1)){16. Instantiate(ballPrefab);17. }18. }19.}7、不在camera 视野内,对象销毁[csharp]view plain copy1.<span style="white-space:pre"> </span>// 画面看不到销毁2.void OnBecameInvisible(){3. Destroy(this.gameObject);4. }1、Start() 开始方法;2、Update() 正常更新逻辑,每渲染一帧都会调用3、FixedUpdate() 不受帧率的变化,固定的时间间隔被调用,怎么设置间隔?Edit->Project Setting->time 下面的Fixed timestep4、LateUpdate() 会在每一帧中被调用。
u3d控制物体旋转的代码
u3d控制物体旋转的代码U3D是一种非常强大的游戏引擎,它不仅可以创建静态的2D和3D物体,还可以对这些物体进行各种交互操作。
本文将介绍如何使用U3D编写代码来控制游戏中的物体旋转。
1.添加旋转脚本首先,我们需要在Unity中创建一个新的游戏对象,并将其命名为"RotatingObject"。
然后,我们需要将一个旋转脚本添加到该对象中。
为此,首先需要在Unity的"Project"窗口中创建一个新的C#脚本,并将其命名为"RotateObject"。
接着,在"RotatingObject"的"Inspector"窗口中,点击"Add Component"按钮,然后选择"New Script"并将其命名为"RotateObject"。
最后,将新创建的脚本文件拖拽到"RotateObject"组件的"Script"属性中。
2.编写旋转代码现在,打开"RotateObject"脚本文件,并添加以下代码:```using UnityEngine;public class RotateObject : MonoBehaviour{public float rotateSpeed = 50f;void Update(){transform.Rotate(Vector3.up * Time.deltaTime *rotateSpeed);}}```代码解析:- `using UnityEngine;`导入U3D游戏引擎命名空间。
- `public class RotateObject : MonoBehaviour`创建一个名为RotateObject的公共类,并继承MonoBehaviour类。
unity 3d 三款游戏完整(入门进阶必备)代码
一.太空陨石大战//******控制太空背景向下移动的游戏脚本******using UnityEngine;using System.Collections;public class BackgroundContoller :MonoBehaviour {public float speed=1.0f;//设置背景向下移动的速度// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {transform.Translate(0,-speed*Time.deltaTime,0);//实现背景向下移动if(transform.position.y<-5.17f) //判断背景是否移出主摄像机照射区域(即游戏屏幕)transform.position=new Vector3(0,12,1); //若移出,则重新设置游戏背景Y轴位置如0,6,12,//以便实现无缝连接使游戏背景连续播放}}using UnityEngine;using System.Collections;public class ExplosionController :MonoBehaviour {public int index=0;public int frameNumber=7;//定义帧数,爆炸动画由7帧组成float frameRate=0;//定义帧速率float myTime=0;int myIndex=0;// Use this for initializationvoid Start () {frameRate=1.0f/frameNumber;//帧速率,帧数framenumber=7}// Update is called once per framevoid Update () {myTime+=Time.deltaTime;//统计爆炸效果动画累计播放的时间myIndex=(int)(myTime*frameNumber);//计算“我的索引值”,使用(int)转成整形:0,2,3,4,5,6//Debug.Log("(int)(myTime*frameNumber)");//Debug.Log((int)(myTime*frameNumber));index=myIndex % frameNumber ;//除以7求余数得索引:0,2,3,4,5,6//Debug.Log(myIndex % frameNumber);render.material.mainTextureScale=new Vector2(frameRate,1);//通过render.material.mainTextureScale设置tiling帧宽属性render.material.mainTextureOffset=new Vector2(index*frameRate,0);//通过render.material.mainTextureOffset设置帧偏移量if(index==frameNumber-1)//如果动画帧数播放完等于6,即索引等于6,则销毁动画Destroy (gameObject);}}using UnityEngine;using System.Collections;public class LoseController :MonoBehaviour {public Texture loseTexture;// Use this for initializationvoid Start () {RockController.score=0;RockController.lives=3;TimeRemainDisplay.leftTime=100;}// Update is called once per framevoid OnGUI () {GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),loseTexture);if(Input.anyKeyDown){Application.LoadLevel("Level");}}}//****控制飞机的游戏脚本****using UnityEngine;using System.Collections;public class PlayerController :MonoBehaviour {public float speed=2.0f;//定义飞机在X轴上的移动速度public GameObject projectile;//定义一个共有子弹对象// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {transform.Translate(speed*Input.GetAxis("Horizontal")*Time.deltaTime,0,0);//实现飞机在X轴上,按下左右键时可水平移动,speed一定要乘上if(Input.GetKeyDown(KeyCode.Space))//判断是否按下xxInstantiate(projectile,transform.position,transform.rotation);//按下空格键时,发射炮弹对象projectile,炮弹发射位置飞机中部transform。
我学院:U3D物体间自动寻路,触发碰撞
U3D物体间自动寻路,触发碰撞代码//圆球自动获取Cube的位置,旋转角度面向Cube,计算距离(发生碰撞)//男孩2号自动获取男孩1号的位置,旋转角度始终面向1号,距离大于2时:冲向1号,小于2时:踢腿var Enemy_ :GameObject;//圆球物体var attackRange = 200.0;//碰撞发生的范围var target:Transform;//位置旋转角度function Update () {//Enemy_ = GameObject.Find("Sphere");if(target == null){return;}//在碰撞距离之外圆球旋转并面向目标var targetPoint = target.position;/*function LookRotation (forward : Vector3, upwards : Vector3 = Vector3.up) : void创建一个旋转,沿着forward(z轴)并且头部沿着upwards(y轴)的约束注视。
也就是建立一个旋转,使z轴朝向view y轴朝向up。
*/var targetRotation = Quaternion.LookRotation(targetPoint - Enemy_.transform.position,Vector3.up);/*static function Lerp (from : Quaternion, to : Quaternion, t : float) : Quaternion通过t值from向to之间插值,并且规范化结果。
在from和to之间插值旋转(from和to不能与附加脚本的物体相同) 也就是说男孩2号的目光所示方向与1号所示方向连接成对角线,2号的目光从初始到对角线方向移动*/Enemy_.transform.rotation = Quaternion.Slerp(Enemy_.transform.rotation,targetRotation,Time.deltaTime*2.0);//距离小于200,满足碰撞条件//获取2个男孩之间的距离,距离在2-200间时,男孩2号旋转注视1号,并且往1号位置所在移动;//当距离小于2时,男孩2号做出踢腿动作var Distance_CS :float = Vector3.Distance(transform.position,target.position);if(Distance_CS < attackRange){if(Distance_CS >2){var targetPoint1 = target.position;//当前Cube位置Enemy_.transform.rotation = Quaternion.LookRotation(targetPoint1 - transform.position,Vector3.up);Enemy_.transform.Translate(Vector3.forward*0.05);Enemy_.animation.CrossFade("yaotou");}else if(Distance_CS <= 2){Enemy_.animation.CrossFade("chutui");}}}如图所示:距离大于2更多游戏开发教程,请上我学院在线平台:/。
unity3d小技巧合集
【Unity】技巧集合转发,请保持地址:/stalendp/article/details/17114135这篇文章将收集unity的相关技巧,会不断地更新内容。
1)保存运行中的状态unity在运行状态时是不能够保存的。
但在运行时编辑的时候,有时会发现比较好的效果想保存。
这时可以在“Hierarchy”中复制相关对象树,暂停游戏后替换原来的,就可以了。
2)Layer的用法ToLayer("Ground"); // 通过名字获取layer3D Raycast[csharp]view plaincopy2D Raycast[csharp]view plaincopy3)物理摄像头取色(WebCamTexture)[csharp]view plaincopy保存截图:[csharp]view plaincopy4) 操作componenent添加:[csharp]view plaincopy删除:[csharp]view plaincopy5)动画相关状态Init到状态fsShake的的条件为:参数shake==true;代码中的写法:触发fsShake:[csharp]view plaincopy关闭fsShake [csharp]view plaincopy6)scene的切换同步方式:[csharp]view plaincopy异步方式:[csharp]view plaincopy7)加载资源[csharp]view plaincopy8)Tag VS. Layer-> Tag用来查询对象-> Layer用来确定哪些物体可以被raycast,还有用在camera render中9)旋转transform.eulerAngles 可以访问rotate的xyz[csharp]view plaincopy10)保存数据[csharp]view plaincopy11)动画编码/lopezycj/archive/2012/05/18/Unity3d_AnimationEvent.html/Components/animeditor-AnimationEvents.html/questions/8172/how-to-add-new-curves-or-animation-events-to-an-im.html12) 遍历子对象[csharp]view plaincopy13)音效的播放先添加Auido Source,设置Audio Clip, 也可以在代码中加入。
unity3d各键值对应代码
unity3d各键值对应代码KeyCode :KeyCode是由Event.keyCode返回的。
这些直接映射到键盘上的物理键。
值对应键Backspace 退格键Delete Delete键Tab TabTab键Clear Clear键Return 回车键Pause 暂停键Escape ESC键Space 空格键Keypad0 ⼩键盘0Keypad1 ⼩键盘1Keypad2 ⼩键盘2Keypad3 ⼩键盘3Keypad4 ⼩键盘4Keypad5 ⼩键盘5Keypad6 ⼩键盘6Keypad7 ⼩键盘7Keypad8 ⼩键盘8Keypad9 ⼩键盘9KeypadPeriod ⼩键盘“.”KeypadDivide ⼩键盘“/”KeypadMultiply⼩键盘“*”KeypadMinus ⼩键盘“-”KeypadPlus ⼩键盘“+”KeypadEnter ⼩键盘“Enter”KeypadEquals ⼩键盘“=”UpArrow ⽅向键上DownArrow ⽅向键下RightArrow ⽅向键右LeftArrow ⽅向键左Insert Insert键Home Home键EndEnd键PageUp PageUp键PageDown PageDown键F1功能键F1F2功能键F2F3功能键F3F4功能键F4F5功能键F5F6功能键F6F7功能键F7F8 功能键F8F9 功能键F9F10 功能键F10F11 功能键F11F12 功能键F12F13 功能键F13F14 功能键F14F15 功能键F15Alpha0 按键0Alpha1 按键1Alpha2 按键2Alpha3 按键3Alpha4 按键4Alpha5 按键5Alpha6 按键6Alpha7 按键7Alpha8 按键7Alpha9 按键9Exclaim ‘!’键DoubleQuote双引号键Hash Hash键Dollar ‘$’键AmpersandAmpersand键Quote 单引号键LeftParen 左括号键RightParen右括号键Asterisk ‘ * ’键Plus ‘ +’键Comma ‘ , ’键Minus ‘ - ’键Period ‘ . ’键Slash ‘ / ’键Colon ‘ : ’键Semicolon‘ ; ’键Less ‘< ‘键Equals ‘ = ‘键Greater ‘ >‘键Question ‘ ? ’键At ‘@’键LeftBracket‘ [ ‘键Backslash ‘ \ ’键RightBracket‘ ] ’键Caret ‘ ^ ’键Underscore‘ _ ’键BackQuote‘ ` ’键A ‘a’键B ‘b’键C ‘c’键D ‘d’键E ‘e’键F ‘f’键G ‘g’键H ‘h’键I ‘i’键J ‘j’键K ‘k’键L ‘l’键M ‘m’键N ‘n’键O ‘o’键P ‘p’键Q ‘q’键R ‘r’键S ‘s’键T ‘t’键U ‘u’键V ‘v’键W ‘w’键X ‘x’键Y ‘y’键Z ‘z’键Numlock Numlock键Capslock ⼤⼩写锁定键ScrollLockScroll Lock键RightShift 右上档键LeftShift 左上档键RightControl右Ctrl键LeftControl左Ctrl键RightAlt 右Alt键LeftAlt 左Alt键LeftApple 左Apple键LeftWindows左Windows键RightApple右Apple键RightWindows右Windows键AltGr Alt Gr键Help Help键Print Print键SysReq Sys Req键Break Break键Mouse0 ⿏标左键Mouse1 ⿏标右键JoystickButton0 ⼿柄按键0JoystickButton1 ⼿柄按键1Joystick1Button0 第⼀个⼿柄按键0 Joystick1Button1 第⼀个⼿柄按键1 Joystick2Button0 第⼆个⼿柄按键0 Joystick3Button0 第三个⼿柄按键0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function Start () {
Destroy(gameObject.Find("Box"), 3);
}
04、实例来创建对象
//Simple Instantiation of a Prefab at Start
var thePrefab : GameObject;
function Start () {
var myTimer : float = 5.0;
function Update () {
if(myTimer > 0){
myTimer -= Time.deltaTime;
}
if(myTimer <= 0){
Debug.Log("GAME OVER");
}
}
Debug.Log("Hit the wall");
}
}
02、检测输入
function Update () {
if(Input.GetButtonUp("Jump")){
Debug.Log("We Have Hit the Space Bar!");
}
}
03、销毁对象
var instance : GameObject = Instantiate(thePrefab, transform.position, transform.rotation);
}
建立JAVA,把代码拖入到空GameJect上,然后把Prefab拖入到公共变量上,就可以了
05、简易定时器
06、物体在屏幕上移动
var speed : float() {
transform.Translate(Vector3(0,0,speed) * Time.deltaTime);
}
07、钢体向目标处移动
//Basic force to move a rigidbody object
var power : float = 500.0;
function Start () {
rigidbody.AddForce(Vector3(0,0,power));
}
08、碰撞然后转到下一场景
function OnCollisionEnter (myCollision : Collision) {
if( == "Floor"){
Application.LoadLevel(myLevel);
}
}
floor---被动碰撞的的纲体
把代码拉到主动纲体上
然后
场景设置:file----build seting----对话框,然后把当前场景拖里,然后把下一场景拖里,测试OK
01、基本碰撞检测代码
function OnCollisionEnter(theCollision : Collision){
if( == "Floor"){
Debug.Log("Hit the floor");
}else if( == "Wall"){