unity3d 非运行模式下执行脚本

本文介绍了Unity中ExecuteInEditMode属性,它能让脚本在非运行模式下执行。详细说明了不同函数在非运行模式下的调用规则,如Update、OnGUI等,还提及Awake与Start的调用规则与运行模式一致,同时提醒切换模式时资源会重新加载,相关函数会执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

[ExecuteInEditMode]//在非运行模式下也会执行,改脚本是更改画布的拉伸
public class CanvasHelper : MonoBehaviour
{
public float minAspect, maxAspect, minMatch, maxMatch;
private CanvasScaler canvasScaler;

private void Start()
{
    canvasScaler = GetComponent<CanvasScaler>();
    Update();
}

private void Update()
{
    float aspect = Screen.width / (float)Screen.height;
    if (aspect > maxAspect) canvasScaler.matchWidthOrHeight = maxMatch;
    else if (aspect < minAspect) canvasScaler.matchWidthOrHeight = minMatch;
    else
    {
        canvasScaler.matchWidthOrHeight = (aspect - minAspect) / (maxAspect - minAspect) * (maxMatch - minMatch) + minMatch;
    }


}

}

ExecuteInEditMode属性的作用是在EditMode下也可以执行脚本。Unity中默认情况下,脚本只有在运行的时候才被执行,加上此属性后,不运行程序,也能执行脚本。

与PlayMode不同的是,函数并不会不停的执行。

Update : 只有当场景中的某个物体发生变化时,才调用。

OnGUI : 当GameView接收到一个Event时才调用。

OnRenderObject 和其他的渲染回调函数 : SceneVidw或者GameView重绘时,调用。

Awake与Start调用规则:

Awake:加载时调用。

Start:第一次激活时调用。

这个与运行模式下的调用规则一致。参见《unity—–函数执行顺序》。

需要注意的是,由于在两种模式下都可以运行,所有,切换模式的那一刻,值得我们留 意一下。
不管是从编辑模式进入运行模式,还是从运行模式进入编辑模式,unity都会重新加载资源,所以:

当该MonoBehavior在编辑器中被赋于给GameObject的时候,Awake, Start 将被执行。
当Play按钮被按下游戏开始以后,Awake, Start 将被执行。
当Play按钮停止后,Awake, Start将再次被执行。
当在编辑器中打开包含有该MonoBehavior的场景的时候,Awake, Start将被执行。

转载:https://blog.youkuaiyun.com/u012085988/article/details/21445803

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值