unity 使用

1>.项目不要建立在中文路径下 u3d对中文支持不太好.

2>.摄像机看到的就是屏幕看到的

3>.unity支持C#和javaScript,国内用C#的占大多数,javaScript不是标准语法,叫UnityScript更合适,使用Mono实现C#跨平台,C#的编辑工具也是MonoDevlop.  (Mono技术)

4>.Stat,Update是系统预定义的一些方法,当相应事件发生的时候系统就会调用脚本的相应方法,后续还有OnMouseDown,OnGUI,为了简化这些方法不是override父类的用法,类似于Main()的调用约定。

5>.脚本是依附于游戏对象的,事件和操作的对象也是当前脚本所在的游戏对象,脚本只能依附于游戏对象或者由其他脚本调用才会运行,一个脚本可以放到多个游戏对象上,是多个实例。一个脚本的多个实例和其他脚本之间互不干扰。

6>.File->BuildSetting, 构建exe flash,如果有Android ios等开发环境还可以构建为手机软件。

7>.美工用3dsmax生成FBX模型,FBX拖入Project(项目路径和FBX文件名不要有中文),接着把模型到Hierarchy,调整它的坐标,把旋转脚本拖到“圣殿”上这样圣殿也就跟着一起旋转了,把Cube的脚本去掉(Inspector中Remove掉Component即可)这样Cube就不旋转了。

8>.Hierarchy显示的是界面上的游戏对象(GameObject),每个游戏对象都有,至少要有一个Camera,点击Camera就可以在Preview中看到摄像机的视角画面,每个对象有Position(位置),Rotation(旋转),Scale(缩放大小)三组属性。

9>.U3D采用的是:沿屏幕横向为X轴,沿屏幕纵向为y轴,垂直屏幕方向为Z轴。右上背向观众三个方向为正方向。左手坐标系。

10>.Vector3是Unity中定义的一个含有x,y,z三个字段的类,可以表示位置点,也可以表示一个向量,Vector3乘以数值表示对向量的三个值乘以相应的值,V1-V2则表示从V2指向V1的向量。

11>.如果Unity的Scene视图显示不正常,就主菜单-->Window->Layouts->RevertFactory Settings,恢复出厂设置即可。

12>.游戏中每个游戏对象都对应一个GameObject类的实例,脚本中的transform等就是针对脚本依附的游戏对象的,gameObject属性也能拿到这个游戏对象。

13>.在脚本中操作别的对象使用GameObject.Find(名字)找到对象,尽量不要每次操作都去Find,效率低,而是到在Start中找到保存到成员字段中,改名后要回车。

14>.u3d中有屏幕坐标和世界坐标, 屏幕坐标原点位于左下角。 屏幕坐标也是鼠标坐标转换为世界坐标用函数:
Camera.mainCamera.ScreenToWorldPoint(new(Vector3(Input.mousePosition.x, Input.mousePosition.y,3)));//3表示Z方向的假定深度,因为屏幕是二维没有深度,越大越靠里。

15>.备注:vector2 - vector1表示从vector1指向vector2的向量。

16>.动态创建游戏对象
GameObject goNew = GameObject.CreatePrimitive(PrimitiveType.Cube);
goNew.transform.position = new Vector3(0,0,0);//设置对象位置
goNew.AddComponent<Rigidbody>();//添加组件 刚体 音效 脚本 都可以
goNew.AddComponent<AutoDestory>();//AutoDestory 是一个类

17>:当前脚本实例依附的游戏对象
this.gameObject;

18>:动态销毁游戏对象
GameObject obj;
Destory(obj);
Destory(obj, 2);两秒之后死
Destory(this.gameObject);//销毁当前对象

19>:获取当前鼠标点所在世界位置
Vector3 targetpos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, 
Input.mousePosition.y, 3));

20>:对刚体添加力
goNew.rigidbody.AddForce(new Vector3(0,0,0));

21>:声音播放
首先项目中要有一个AudioListener组件,扬声器播放的声音就是AndioListener组件所在位置
听到的声音。默认AudioListener是放到Main Camera上,没有AudioListener的话是听不到声音的。
newObj.GetComponent<AudioSource>().Play();//获取声音组件并播放

22>:获取对象绑定的组件:
newObj.GetComponent<Rigidbody>();
结果和
newObj.rigidbody;一样

23>:GUI: GUI部分是每帧擦除重绘的,只应该在OnGUI中绘制GUI,
按钮----> GUILayout.Button("Hello");
只读标签---->GUILayout.Label();

private string str = "";
private string str2 = "";
private bool sex = false;

void OnGUI()
{
if(GUI.Button(new Rect(10,10,70,20),"按钮"))
{
print("A");
}
if(GUI.RepeatButton(new Rect(10,100,70,20),"激活按钮"))
{
print("B");
}
str = GUI.TextArea(new Rect(10,130,200,20),str);
str2 = GUI.PasswordField(new Rect(10, 150, 200, 20),str2,'*');
sex = GUI.Toggle(new Rect(10, 180, 50, 50),sex,"男");
}

24>:3d贴图 用材质(Material)
引用图片--- 材质(Material)--- 渲染对象  

public Material mat;
obj.gameObject.renderer.material = mat;

25>:2D贴图 用纹理(Texture)

public Texture curtex;
GUI.DrawTexture(new Rect(0,0,curtex.height,curtex.width), curtex);

26>:设置鼠标指针是否显示
Screen。ShowCursor = false;

27>: 预置 就是克隆的意思 足球场观众


28>: 碰撞检测函数
//每次游戏对象发生碰撞的时候 都会执行此方法
//参数Collision co 是被碰撞的游戏对象
void OnCollisionEnter(Collision co)
{

}

29>: 鼠标常用事件
void OnMouseEnter();//鼠标进入
void OnMouseExit();//鼠标移出
void OnMouseDown();//鼠标点击
void OnMouseUp();//鼠标抬起
void OnMouseDrag();//鼠标拖拽

Input.GetMouseButtonDown(0);

static GameObject Instantiate() 克隆

30>: UI布局GUILayout

31>: 阴影烘焙 对于禁止不动的物体阴影可以一次烘焙 


32>: 动画  动画剪辑  

设置对象动画 
obj.animation.Play("Run");//设置跑动画 
把摄像机加到对象的自组件中  摄像机将跟随对象的移动 

33>:Application 常用方法:
static void LoadLevel(int index);//载入关卡
static void LoadLevel(string name);
static void CaptureScreenShot(string filename);//截屏
static void OpenURL(string url);//打开url
static void Quit();//退出

34>: 切换场景
添加几个场景----设置build---- 添加切换场景脚本 ---- 

void update()
{
if(Input.GetKeyDown(KeyCode.A))
{
Application.LoadLevel(0);
}
if(Input.GetKeyDown(KeyCode.B))
{
Application.LoadLevel("b");
}
if(Input.GetKeyDown(KeyCode.C))
{
Application.LoadLevel(2);
}
if(Input.GetKeyDown(KeyCode.Space))
{
Application.CaptureScreenShot(@"C:\User\SpringRain\Desktop\1.png");
}
if(Input.GetKeyDown(KeyCode.D))
{
Application.OpenURL("http://www.baidu.com");
}
if(Input.GetKeyDown(KeyCode.Escape))
{
Application.Quit();
}
}

35>:射线   鼠标点击屏幕 将映射到游戏场景中位置
void Update()
{
if(Input.GetMouseButtonDown(0))
{
//按下鼠标左键的时候发射射线
//从摄像头到鼠标点击的位置
Ray ray = Camera.main.ScreenPointToPay(Input.mousePosition);
//获得射线的碰撞信息
RaycastHit hitInfo;
//发射射线 并当发生碰撞的时候 将信息存储到hitInfo中
if(Physics.Raycast(ray,out hitInfo))
{
//销毁碰撞到的游戏物体
Destory(hitInfo.collider.gameObject);
}

}
}


36>: 图集和精灵


37>: 输入
功能强大的类:Input可以处理鼠标,键盘,遥感,方向盘,手柄等游戏外设,也可以处理IOS/Android等移动设备的触摸输入信息。
所有输入信息的更新都是在Updata方法中完成的,因此和输入处理相关的脚本都要放到Updata方法中。
GetAxis("Mouse X"),获得一帧内鼠标在水平轴的移动距离,参数名称在Edit-->Project Setting-->Input中进行设置。

38>:SendMessage()

void Updata()
{
if(Input.GetKeyDown(KeyCode.W))
{
//调用当前游戏对象上所有脚本组件的Say方法
//SendMessage("Say", 1);
}
}

void Say(int num)
{
print("t1:" + num);
}

39>:切勿从资源管理器(Windows)或探测器(OS X)移动任何资源或组织安排该文件夹,而始终使用项目视图来完成!
在Unity内存储着很多资源文件之间的关系的元数据,这些数据全都依赖于Unity可以在哪里找到这些资源。如果你从项目视图中移动资源,这些关系会得以维持。如果你在Unity之外移动它们则会破坏这种关系。

40>: 操作
Arrow Movement 方向键移动:
可以使用方向键来移动场景,就像走路浏览。上下箭头移动相机面对自己向前向后方向。左右箭头横向平移视图。按住Shift键可使方向键移动更快。

Focusing 聚焦:
选择任一游戏对象,然后按F键,场景视图将以所选对象为中心点,这就是通常所说的框选。

Orbit, Move, and Zoom 旋转、移动和缩放:
。按住Shift可以增加移动和缩放的速率。

Mouse 鼠标:
旋转:按住Alt键并拖动鼠标将绕当前轴点旋转镜头。
移动:按住Alt键和鼠标中键并拖动进行镜头平移(实际使用Unity3D时候,无需按下Alt键也可以平移镜头)
缩放:按住Alt键并拖动鼠标右键来缩放镜头。

对于两键鼠标或触控板,按住Alt-Control(Mac是Alt-Command)并左键将激活移动操作。在Mac按住Control和Alt并左键点击将激活缩放操作。此外,鼠标滚轮可以用来缩放视图。

Flythrough Mode 漫游模式:
该模式可以让你象许多第一人称视角游戏一样来浏览你的场景。

按住鼠标右键。现在你可以使用鼠标和WASD键控制前后左右,Q和E键控制上下来移动视图。按下Shift移动得更快。

Scene Gizmo 场景手柄工具:

在场景视图右上角是场景手柄工具,显示了场景视图当前视角方向,你可以用它快速修改视角。
你可以点击它的方向杆,更改场景成为该方向的正交模式。在正交模式中,你可以鼠标右键拖动来旋转,也可以按住Alt+鼠标左键拖动来平移。要退出此模式,按一下手柄工具的中间(小方块)。你也可以随时按住Shift并点击手柄工具中间小方块来切换正交模式。

正交模式,对象不会因为距离远而变小


学习参考:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值