【Unity 脚本相关】实现脚本之间动态变量传递

这篇具有很好参考价值的文章主要介绍了【Unity 脚本相关】实现脚本之间动态变量传递。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这是我在做作品的过程中遇到的问题,大概阐述一下遇到的问题及解决思路。

1 问题阐述

因为是做天空盒,有很多变量需要控制,shader之间又想实现颜色、变量的传递,所以整个项目的所有暴露出来的可调整变量,我都汇总在了主脚本Skybox中,并把这个Skybox脚本挂在了Main Camera对象下:

unity脚本之间的变量引用,Unity学习,unity

又在场景中加入了面片云模型:

unity脚本之间的变量引用,Unity学习,unity

面片云需要自转,我希望暴露出一个参数能够控制面片云自转的速度,这个参数希望跟其他参数一起,都在Skybox脚本中控制:

unity脚本之间的变量引用,Unity学习,unity

那么问题就来了,云自转我是单独给云模型对象挂了一个Rotate脚本,现在这个Rotate脚本需要以某种方式访问到Skybox脚本中定义的Cloud Speed变量。

GameObject.Find()方法被我Pass了,效率很低,还有就是一堆需要各种访问父对象的方法,我觉得好麻烦。。

如果是静态变量,那好说,在脚本Skybox里定义,

pulbic static int CloudSpeed = 1;

脚本B就可以直接访问这个变量,

int speed = Skybox.CloudSpeed;

但现在这个变量需要可调控,意味着不能是静态变量。所以整个过程就是,脚本Rotate需要访问脚本Skybox中定义的动态变量CloudSpeed

2 解决思路

我在Skybox脚本中定义CloudSpeed变量的同时,定义了一个方法,这个方法会返回定义变量的值:

[Range(1, 10)]
    public int CloudSpeed = 1;
    public int getCloudSpeed()
    {
        return CloudSpeed;
    }

 然后在Rotate脚本访问这个方法,

public Skybox skybox;

void Update()
{
        
    cloudSpeed = skybox.getCloudSpeed();
}

然后把Rotate脚本挂在我的clouds对象下,拖入Main Camera对象就行,

unity脚本之间的变量引用,Unity学习,unity

以上就是我的解决思路了,当然可能饶了弯路,,不一定是最好的方法。文章来源地址https://www.toymoban.com/news/detail-536565.html

到了这里,关于【Unity 脚本相关】实现脚本之间动态变量传递的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://blog.csdn.net/qq_41835314/article/details/129006781

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包