抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >


Learn Regex

什么是正则表达式?

ScriptableObject

平时开发存在的一些问题:

  • 一个场景内有多个相同组件使用相同数值的时候,这个组件也在内存中多了一份实例,浪费内存空间。

  • static或者[Serializable]修饰的变量,在程序退出后会还原。编辑器模式运行时,只能通过Copy Component Values来临时保存调整好的数值。

  • 项目之间、场景之间数据很难共享。

  • 在runtime下要改变某个GameObject上组件的数值,就一定要获取到这个GameObject实例,使项目耦合度成倍提高,最后变成蜘蛛网。

  • 场景中总会有一些空的GameObject用来保存和共享数据,这个GameObject基本不会参与太多的游戏逻辑,但为了保存和共享场景内的数据就不得不碍眼的在场景中出现,逼死强迫症,也不利于模块抽象。

  • 同样,要通过UGUI Button中的On Click事件调用一个GameObject上的方法,也只能获取到GameObject实例来调用,数量太多的话也变成了蜘蛛网。

使用ScriptableObject如何解决

一、背景滚动实现方法

  • 创建一个3d对象Quad,重命名为SimpleBackground,调整好大小(跟图片差不多大)

  • 新建一个材质,设置shader为Unlit/Textu

    image-20220525113508926

  • 将图片texture type设置为default,拖入材质。

    image-20220525114905000

  • 将材质拖进SimpleBackground,这样就做好了背景。

  • 通过实时更改材质中offset偏移值,来实现滚动效果

    image-20220525115257651

  • 滚动代码如下:将Start()改为每帧刷新的协程(模拟Update())

Material material;
[SerializeField] Vector2 scrollVelocity;//速度
void Awake()
{
material = GetComponent<Renderer>().material;
}
private IEnumerator Start()
{
while (GameManager.GameState != GameState.GameOver)
//游戏状态不为gameover可运行场景滚动
{
material.mainTextureOffset += scrollVelocity * Time.deltaTime;
yield return null;
}
}

二、Input System动作输入系统

※提示:github是国外网站,所以图片加载速度一般,现在我已经换成了阿里云存储了,详细请看:https://niaoyu00.github.io/Blog/2022/10/24/%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%E5%88%86%E6%9E%90/

gitee的图床居然炸了?!难怪我之前看网站里图片都没了,一直没意识到是gitee的问题。因为本人前段时间重装电脑系统,导致今天整理笔记的时候要重新配置picgo的图床,刚配置完一看图片显示都是空的…我一直怀疑是因为我typora没升级付费版,所以他不给显示。网上查了半天,最后才发现是gitee加了防盗链,虽然说拿他白嫖做图床有点不厚道,但是你既然开放了这个功能,要停的话至少提前说一下嘛。算了,回到重点,下面是github图床搭建流程,在此记录下来以后忘了可以看看:

1、新建一个github仓库,clone到本地,然后将gitee旧图片文件夹拷进来再上传。

完成后大概是这样:

slider.onValueChanged.AddListenerslider.onValueChanged.AddListener((float v) => {//v等价于slider.value AudioTuning.Instance.SetMasterVolume(v); }); AudioTuning:p...

通过对象名称(Find方法) GameObject.Find("name") 通过标签获取单个游戏对象(FindWithTag方法) GameObject.FindWithTag("Tag"); 通过标签获取多个游戏对象(FindGameObjectsWithTags方法) 通过类型获取单个游戏对象(FindObjectOfType方法) ...

参考项目:https://www.bilibili.com/video/BV15W411976h

新加的功能

1.怪物球自转

2.不同炮台只可在特定颜色,区域内建造。

协程:协同程序

协程的使用前提:直接或间接的继承MonoBehavior才可以使用。

不足:会产生外的开销。

协程方法与普通方法的区别:

1.配置提交人姓名: git config --global user.name提交人姓名
2.配置提交人姓名: git config --global user.email提交人邮箱
3.查看git配置信息: git config --list
git init          	  |初始化git仓库
git status |查看文件状态
git add 文件列表 |提交到暂存区
git commit -m 提交信息 |向仓库提交代码

用==暂存区==中的文件覆盖==电脑工作目录==的文件:git checkout 文件名

将文件从暂存区里删除: git rm --cached 文件

unity的Axis设置,路径为Edit->Project setting->Input:

属性如下:

Name:==按键名==该键的名称,可以在脚本编程中直接引用他。比如:Input.GetButtonDown(“Jump”);

Descriptive Name:==【描述名】==在游戏的独立机构中的配置对话框中,当控制值为正时候所显示的名称。默认空白。