最终效果
系列导航
文章目录
- 最终效果
- 系列导航
- 前言
- 使用DoTween优化阳光生成和拾取效果
- 拾取阳光优化
- 生成阳光优化
- 场景加载进度条
- 新增加载场景Loading,绘制开始界面
- 绘制菜单界面
- 滑动滚轮一直滚动
- 场景加载
- 源码
- 结束语
前言
本节主要实现使用DoTween优化阳光生成和拾取效果,场景切换加载进度条
使用DoTween优化阳光生成和拾取效果
拾取阳光优化
修改Sun
bool isMoving;
//当鼠标或手指经过物体时触发
public void OnMouseOver()
{
if (isMoving) return;
isMoving = true;
transform.DOMove(Camera.main.ScreenToWorldPoint(UIManager.Instance.pickUpPos.position), 0.5f).OnComplete(
() =>
{
GameManager.Instance.SetSunSum(sun);
AudioManager.Instance.PlaySFX("拾取阳光");
Destroy(gameObject);
}
);
}
效果
生成阳光优化
修改SunFlower
//产生阳光
public void ProduceSunshine()
{
AudioManager.Instance.PlaySFX("生产阳光");
// 在单位圆内生成随机点
Vector2 randomPoint = Random.insideUnitCircle * produceDistance;
// 将随机生成位置
Vector3 spawnPosition = new Vector3(randomPoint.x, randomPoint.y, 0f) + transform.position;
Transform tf = Instantiate(sunshine, spawnPosition, Quaternion.identity); // 生成阳光
//慢慢变大动画效果
tf.DOScale(Vector3.one, 0.5f).From(Vector3.zero);
}
效果
场景加载进度条
新增加载场景Loading,绘制开始界面
加载直接用一个滑动条,禁用背景图片,修改滑动条和滑动滚轮背景图片即可,记得禁用可拖动功能,并修改禁止透明和颜色
修改滑动条为已填充,水平模式
效果
绘制菜单界面
新增菜单场景Menu,简单绘制界面,先加一个背景图片即可
滑动滚轮一直滚动
新增Rotate ,这里使用了DOTween库来实现游戏对象的旋转动画,并且设置为循环播放。
public class Rotate : MonoBehaviour {
private void Start() {
transform.DORotate(new Vector3(0, 0, -360), 2f, RotateMode.FastBeyond360).SetEase(Ease.Linear).SetLoops(-1, LoopType.Restart);
}
}
效果
场景加载
具体看这一篇文章就行了:【Unity实战】切换场景加载进度和如何在后台异步加载具有庞大世界的游戏场景,实现无缝衔接(附项目源码)
新增MainMenuManager,因为我们的场景比较小,时间加载会很快,所以这里加载进度直接用虚拟的就可以了
public class MainMenuManager : MonoBehaviour
{
[SerializeField] private Slider _loadingBar;//加载进度条
[SerializeField] private SceneField _levelScene;//加载场景
[SerializeField] private GameObject btnStart;//开始游戏按钮
[SerializeField] private float loadingTime = 2;//加载时间
private float curProgress;
private void Start()
{
AudioManager.Instance.PlayMusic("ThemeSong");
_loadingBar.value = 0;
btnStart.SetActive(false);
}
private void Update()
{
curProgress += Time.deltaTime / loadingTime;
if (curProgress >= 1){
curProgress = 1;
btnStart.SetActive(true);
}
_loadingBar.value = curProgress;
}
//开始游戏
public void StartGame()
{
AudioManager.Instance.PlayMusic("bgm2");
//加载场景
SceneManager.LoadScene(_levelScene);
//清除 DOTween 库中当前正在进行的所有动画和补间
DOTween.Clear();
}
}
配置
效果
源码
源码不出意外的话我会放在最后一节
结束语
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,以便我第一时间收到反馈,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!
好了,我是向宇
,https://xiangyu.blog.csdn.net
一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~