RPG项目
一、项目资源文件
(1)图片
(2)模型
(3)音频
(4)插件(摇杆、小地图、DoTween)
二、文件夹管理
(1)图片:Textures
(2)模型:Models
(3)音频:Audios
(4)资源:Resources
(5)脚本:Scripts
(6)场景:Scenes
(7)动画状态机:Animators
(8)预设:Prefabs
(9)插件:Plugins
三、规范
1、代码
(1)类:每个单词首字母都大写,要求必须有意义,禁止拼音
(2)方法:每个单词首字母都大写,要求必须有意义,禁止拼音
(3)变量:首字母小写,后面每个单词首字母都大写,禁止拼音
(4)注释:类、方法、变量
2、文档
(1)项目演示
(2)需求分析
四、操作流程
1、搭建UI界面(游戏简介、登录、注册、角色选择、游戏进度)
(1)设置界面分辨率
(2)游戏简介界面
①你好,我是公主,我在森林迷路了,快来救我吧!
2、注意:
(1)用Panel作为容器来管理页面
(2)页面里面的内容全部定位
(3)获取UI对象都用名称
(4)按钮都用监听事件
girlBtn.onClick.AddListener(GirlShow);
void GirlShow() {
girl.SetActive(true);
boy.SetActive(false);
}
(5)用枚举管理各个面板
2、游戏场景操作
(1)摇杆、小地图制作
(2)
3、思考题:如果射线同时碰到UI和物体(即射线穿过UI)该怎么办呢?
https://blog.csdn.net/qq_29412103/article/details/96476630
!EventSystem.current.IsPointerOverGameObject()
4、血条和名称跟随
float yOffset=200, yOffset2 = 230;
RectTransform blood;
Text name;
void Start()
{
blood = (RectTransform)GameObject.Find(“blood”).transform;
name = GameObject.Find(“playerName”).GetComponent
}
void Update()
{
Vector2 pos = Camera.main.WorldToScreenPoint(transform.position);
blood.position = pos + new Vector2(0, yOffset);
name.transform.position= pos + new Vector2(0, yOffset2);
//血条超出屏幕就不显示
if (pos.x > Screen.width || pos.x < 0 || pos.y > Screen.height || pos.y < 0)
{
blood.gameObject.SetActive(false);
}
else
{
blood.gameObject.SetActive(true);
}
}
5、飘血文字
bool flag = false;
GameObject go;
float speed = 40;
if (Input.GetMouseButtonDown(0))
{
flag = true;
go = Instantiate(bloodText);
go.transform.position = Camera.main.WorldToScreenPoint(this.transform.position) + new Vector3(0,300,0);
go.GetComponent
go.transform.SetParent(GameObject.Find(“Canvas”).transform);
}
if (flag)
{
if (go != null)
{
go.transform.Translate(Vector3.up * Time.deltaTime * speed);
Destroy(go, 1f);
}
}
功能实现:
项目资源已上传,有需要的可以下载!
注意事项:
1.场景切换为2D
2.图片要设置为Sprite