unity3d 学习笔记(三)

Unity操作与脚本指南
本文介绍了Unity编辑器中的场景视图操作技巧,包括飞行模式、移动吸附等,并详细讲解了Unity脚本的基础使用方法,如物体间通信、时间类的应用及随机数生成。

场景视图的操作:


飞行模式: 按住鼠标右键 w s a d 前后左右浏览当前视图 q e 上下浏览, 正交模式下无效 需透视图


移动吸附:移动状态(w) ctrl+shif  移动吸附在其他物体上移动


顶点吸附:移动状态(w)v 键  移动吸附在其他物体上移动


特定的增量移动: 移动状态(w)  ctrl ,按特定的增量移动, 可以设置增量  Edit-snapSettings.


Unity脚本的使用

void Start () {
		ScriptB sb = GetComponent<ScriptB>();
		sb.Say();
	}
	
	void Update () {
		this.transform.Rotate(new Vector3(0,speed * Time.deltaTime,0));
		rigidbody.mass = Mathf.Sin(Time.deltaTime)+1;
	}

!gameObject上的属性都可以直接使用,没有的可以通过getComponent获取访问
!通常transform 也可以替代gameObject进行使用 eg:transform.renderer... 如果一个gameObject对象没有transform组件就不能在场景中显示,只能用来存储数据(为什么可以替代gameObject使用还没搞懂).
public Transform target;


void Update () {
  target.renderer.material.color = Color.red;
}
/////
public GameObject target;
void Start () {
 target = GameObject.Find("Main Camera/sphere");
}


//上面如果有多个名称为sphere的他找的是最前面的一个
//根据标签访问
t
arget = GameObject.FindWithTag("fuck"); 
GameObject.FindGameObjectWithTag("fuck"
GameObject.FindGameObjectsWithTag("fuck");   多个


时间Time类:
void OnGUI()
	{
		GUILayout.Label("当前时间:" + Time.time);
		GUILayout.Label("自上一帧时间:" + Time.deltaTime);
		GUILayout.Label("固定增量时间:" + Time.fixedTime);
		GUILayout.Label("固定增量时间间隔:" + Time.fixedDeltaTime);
		GUILayout.Label("平滑delata时间:" + Time.smoothDeltaTime);


		//增量时间可以在edit-projectSetting-time中设置
	}





    关键字yield:在迭代器块中用于向枚举数对象提供值或发出迭代结束信号。迭代器块有两个特殊语句:           ●yield return <expression_r_r_r_r>;           ●yield break;   迭代器块 
    迭代器块是有一个或多个yield语句的代码块。下面三种类型的代码块中的任意一种都可以是迭代器块:           ■方法主体           ■访问器主体           ■运算符主体    
    yield语句只能出现在迭代器块中,该块可用作方法、运算符或访问器的体。这类方法、运算符或访问器的体受以下约束的控制: 
        ■不允许不安全块。 
        ■方法、运算符或访问器的参数不能是 ref 或 out。

	void Start () {
		StartCoroutine("Example"); //用StartCoroutine进行触发
		print("Hello");
		print ("world");
	}


       //所有使用yield的函数必须将返回值类型设置为IEnumerator类型
	IEnumerator Example() {
		print(Time.time);
		yield return new WaitForSeconds(2);
		print(Time.time);
	}

类似于as、js中的setTimeout


Random:
void Start () {
		print(Random.seed);
		print(Random.value);
		print(Random.Range(0,1));
		print(Random.Range(0.0f,1.0f));
	}




Returns a random integer number betweenmin [inclusive] and max [exclusive] (Read Only).
If max equalsmin, min will be returned. The returned value will never bemax unless min equals max.




物体间的相互通信
(1) 有层级关系的物体间的通信
BroadcastMessageCalls the method named methodName on every MonoBehaviour in this game object or any of its children.
SendMessageCalls the method named methodName on every MonoBehaviour in this game object.
SendMessageUpwardsCalls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour.

public class SendMessageUpward : MonoBehaviour {
	void OnMouseOver()
	{
		SendMessageUpwards("someoneSay","fuck u");
	}
}


public class RecieveMessage : MonoBehaviour {


	void someoneSay(string str)
	{
		print("someoneSaied" +str);
	}
}




(2)没有层级的关系的通信,可以通过c#的委托事件
public class EventDispatcher : MonoBehaviour {


	public delegate void EventHandler();
	public event EventHandler MouseOver;


	void OnMouseOver()
	{
		if(MouseOver != null)
		{
			MouseOver();
		}
	}
}


public class EventListener : MonoBehaviour {


	public GameObject dispatcher;
	// Use this for initialization
	void Start () {
	
		EventDispatcher ds = dispatcher.GetComponent<EventDispatcher>();
		ds.MouseOver +=Listen;
	}


	void Listen()
	{
		transform.Rotate(new Vector3(0,10*Time.deltaTime,0));
		transform.renderer.material.color = Color.cyan;
	}
}


当学习Unity3D时,以下是一些重要的笔记: 1. Unity3D基础知识: - 游戏对象(Game Objects)和组件(Components):了解游戏对象的层次结构和组件的作用。 - 场景(Scenes)和摄像机(Cameras):学会如何创建场景并设置摄像机视角。 - 材质(Materials)和纹理(Textures):掌握如何创建和应用材质和纹理。 - 动画(Animations):学习如何创建和控制游戏对象的动画。 2. 脚本编程: - C#语言基础:了解C#语言的基本语法和面向对象编程概念。 - Unity脚本编写:学习如何编写脚本来控制游戏对象的行为和交互。 - 常见组件和功能:掌握常见的Unity组件和功能,如碰撞器(Colliders)、刚体(Rigidbodies)、触发器(Triggers)等。 3. 游戏开发流程: - 设计游戏关卡:了解如何设计游戏场景和关卡,包括布局、道具、敌人等。 - 游戏逻辑实现:将游戏规则和玩家交互转化为代码实现。 - UI界面设计:学习如何设计游戏中的用户界面,包括菜单、计分板等。 - 游戏优化和调试:优化游戏性能,解决常见的错误和问题。 4. 学习资源: - Unity官方文档和教程:官方提供了大量的文档和教程,逐步引导你学习Unity3D。 - 在线教程和视频教程:网上有很多免费和付费的Unity教程和视频教程,可根据自己的需求选择学习。 - 社区论坛和博客:加入Unity开发者社区,与其他开发者交流并获取帮助。 通过系统地学习这些内容,你将能够掌握Unity3D的基础知识并开始开发自己的游戏项目。记得不断实践和尝试,不断提升自己的技能!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值