最终效果

系列导航
文章目录
- 最终效果
- 系列导航
- 前言
- 使用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是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~




















