开发过程:
7月20日、7月21日 讨论大作业的项目类型及确定项目类型(unity3d-游戏)和项目以及组长分配各组员的任务。
7月22日 下载相关软件(unity3d、visual studio)及了解学习自己的任务及为明确接下一个月的学习及开发计划。
7月23日、7月24日、 7月25日 在siki学院网站通过学习打砖块( http://www.sikiedu.com/course/77)一个简单的小游戏及进入unity开发的奇幻世界(https://pan.baidu.com/s/1R9ay7ERAAq-DXf5r1L_krQ 密码:78c4)来学习unity3d的基础知识。
7月26日、7月27日 学习c#的入门知识(http://www.sikiedu.com/course/83/tasks)
7月28日 导入项目相关素材及搭建项目环境——家及创建修炼场。
7月29日、7月30号 学习Unity3d四种光的使用并将其运用给环境添加灯光效果。
7月31日、8月1日 根据MonoBehaviour解析器的OntriggerEnter、OnTriggerStay、OnTriggerExit函数及Time类来进行修炼场的计时代码编写。
8月2日、8月3日、8月4日、8月5日 学习GameObject、Component的常用操作以及GUITexture和GUIText,对游戏添加技能图片显示及文字显示。
8月6日、8月7日 搭建水资源及小桥场景。
8月8日、8月9日 优化游戏场景。
8月10日 总结开发过程及开发收获。
开发收获:
1.unity四种灯光
(1)Directional light(平行光{模拟太阳光})
color 光的颜色
Intensity 光照强度
shadow type 影子类型(None无 Hard硬 soft软-性能耗费比较大一点,看着柔和一些)
(2) point light (点光源 {模拟灯泡})
range 光照范围(球半径)
(3) spot light
range 光照长短
spot angle:光照半径,范围
(4)Area Light (区域光源)
2.C#脚本入门学习总结
脚本运行(脚本必须挂载在Companent上)
共同变量(会显示在Inspector面板上,我们可以在Inspector面板上修改它的属性,以Inspector面板上的值优先)
私有变量
静态变量(在环境中只有一份)
脚本访问 (可以访问到这个脚本所在的GameObject上的Camera,GUILayer,transform)
组件之间访问
(1)//this.transform//可以访问到这个脚本所在的GameObject上的transform组件
使用这个this对象可以访问到父类(MonBehavirou)里面的一些默认的系统组件(这个组件不存在的话,)
(2)第二种访问其他组件的方式是通过定义一个public变量,然后在inspector面板中选择或者手动拖放指定
(3)第三种访问其他组件的方式
Transform t = cube1.GetComponent<Trasnsform>();
print(t.position);
首先得到组件所在的GameObject,然后通过GetGomponent方法获得这个GameObect上的组件
3.MonoBehavlour解析
GameObject Component
(1) 事件方法: Awake Start Update FlxedUpdate OnGUI
(2)方法执行顺序:Awake>Start>Update>FixedUpdate>LateUpdate;
(3)void Awake() //苏醒方法,调用脚本的时候执行。
(4) void Start() //比Awake 晚一点 开始执行,和Awake一样 执行一次
(5)void Update() // 更新 每间隔一段时间调用一次 执行时间不固定,每一次执行的时间不一样。所以每一帧执行的时 间不一样,如果这针时间长,下一针执行的时间就会晚一点
(6)void FixedUpdte() // 固定执行,没针执行。不会延迟下一针的执行时间。
(7)void LateUpdate() // 最后运行的。执行时间不固定
4.Unity中的GameObject和常见操作
(1)GameObject
属性 (a)tag
if (other.gameObject.tag == "Player")
(b)name
方法
SetActive设置GameObject是否是活跃(它的父节点不是活跃的子节点都是不活跃的)
(2)如何查找GameObject
(a)直接拖拽赋值(在类中声明public变量,拖拽)
(b)查找
例: GameObject.Find(find by name)
GameObject.FindGameObjectsWithTag(find by tag)
GameObject.FindWithTag(find by tag)
5.Unity中Componet和常用操作
(1)//得到游戏物体
GameObject go ;
//得到Transform组件
Transform tran = gc.transform;
//进行物体的移动
GetComponet如果不为空返回一个组件类型的GameObject//可以在一个GameObject上调用go.GetComponet 也可以在一个脚本对象(组件对象)上调用 transform.GetComponent,查找的范围都是这个GameObject上挂在的所有脚本(组件)。
6.OnGUI
(1)unity中的gui也是按照帧绘制的,OnGUI方法就是按照帧来绘制,按照帧来执行输入检测和按键检测
(2)OnGUI在运行的时候才可以看到效果,OnGUI是直接绘制到屏幕上的ui元素,跟3d环境是分离的
(3)可以绘制文字,图片, 按钮,单选按钮,滑动条
a)static void Label(Rect position, string text); 绘制文字
b)static bool Button(Rect position, string text); 绘制按钮
c)按钮的按键检测
d)使用Screen.width Screen.height获取屏幕的高度和宽度
但GUI并不显示在3D环境中而是时刻显示在屏幕上比如头像显示状态显示,状态栏像是,小地图显示 (GUITexture;GUIText),而坐标的值是按照屏幕的比例来进行计算,坐标原点位于屏幕的左下角向右为x轴,想上为y轴,z轴越大显示在最上方。