首页 > Unity3D频道 > 【Unity杂文】 > Unity3D研究院之判断变量是脚本中赋值还是编辑器预先赋值
2014
07-31

Unity3D研究院之判断变量是脚本中赋值还是编辑器预先赋值

如下图所示,脚本中凡是声明public的变量,都可以在编辑器中赋值也可以在脚本中运行时赋值。今天有个开发者问我,如何能判断变量是脚本中赋值还是从编辑器预先赋值。

Unity3D研究院之判断变量是脚本中赋值还是编辑器预先赋值 - 雨松MOMO程序研究院 - 1

这个问题如果搞清楚Unity脚本的生命周期其实并不难,程序运行时我载入上图的GameObject,此时将执行New Behaviout Script脚本的初始化工作,因为我的脚本上有一个public string text 的属性,所以可以在编辑模式下给它赋值。

脚本载入后,text编辑模式下的赋值工作是在Awake()方法之前,然而我们在程序运行时去修改text变量,那么必然是 Awake() OnEnabe()两个方法在执行完毕以后的事。所以在Awake()方法中先将text的值保存起来。

在需要做逻辑判断的地方,执行如下判断即可。 这样就可以知道某个变量是代码里面赋值还是提前在编辑器预制的了。

期待您的留言与点评,谢谢。

 

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

  1. 陌兄 今天翻看到这里 貌似问的意图 脚本赋值是代码里声明变量的赋值,假设public int val = 1,如果编辑器里面改动过这值为0,程序从awake到后面的值都是0,是想区分这种情况吧目的就是编辑器可能改变了好多变量值,有时想用脚本里原本声明的值,却找不到了,只能把public改成private.

  2. 感谢分享,另外求教再editor中能像max那样编辑模型吗?期望美术做一个基础模型(比如嘴巴),然后在编辑器中调出不同的嘴型,分别保存为不同的prefab,实现模型共享减小资源量。翻了一圈文档,还未找到合适的方案,还是说只能美术分别给出对应嘴型的模型拿过来用?