2018-09-27 16:05:31 caozhaodan 阅读数 1261
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    591 人正在学习 去看看 刘国柱

我们使用Unity或者其他软件都有一个颜色选择功能,但是这个组件只能在编辑模式中用。因此我就自己开发了一个颜色选择器的插件。

在网上也看到其他人的实现方法,都大同小异,通过新建一张texture,再用代码在图片上渲染颜色。正好我刚刚学习了Shader Forge,所以就想着用shader来渲染颜色,也可以复习新学到的知识。
开发环境:Unity2017.1.0f3 ShaderForge1.38

实现初效果
实现初效果

界面使用UGUI开发,选择器分为三个模块,Saturation,Hue,Color。

Hue是 七色渐变图,实现多种颜色的选择。
Saturation是Hue选择的颜色的饱和度。
Color是最后选择的颜色。

下面是每个功能的逐个实现。

首先用UGUI创建界面,可以全部使用Image
在这里插入图片描述
Saturation大小是80,轴点放到左上角。创建子节点SatDot,大小为5。
Hue高80,宽10,轴点放到最上方居中。创建子节点HueDot,高为3,宽为10。

ShaderForge创建2D shader,命名为HueShader,节点图如下
Hueshader
HueShader自带有Hue节点,直接使用即可。因为Hue是从上到下,所以UV只需要V点的区域。

ShaderForge创建2D shader,命名为SaturationShader,节点图如下
SaturationShader

因为需要在Hue上选择的颜色,只要将HueDot的y坐标相对Hue的高度的比例传给Value。

ShaderForge创建2D shader,命名为ColorShader,节点图如下
在这里插入图片描述

Value是HueDot位置相对Hue的高度的比例(同上),u是SatDot的x坐标相对于Saturation的宽度的比例,v是SatDot的y坐标相对于Saturation的高度的比例。

shader创建完成,在创建3个材质球,将3个shader分别拖到材质球,把材质球对应给不同的Image。
下面就开始一些简单的C#代码实现颜色的选择。

首先SatDot要在Saturation范围内通过鼠标拖动可以上下左右移动,HueDot要在Hue范围内只能上下移动,不能左右移动。
创建C#脚本,将脚本挂到SatDot和HueDot。如下代码即可使鼠标拖动SatDot和HueDot。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class DragDot : MonoBehaviour,IDragHandler,IBeginDragHandler,IEndDragHandler
{
	public void OnDrag(PointerEventData eventData)
    {
		if(this.transform.parent.name=="Saturation"){
			Saturation (eventData.position);
		}else{
			Hue(eventData.position);
		}
    }
	public  void Saturation(Vector3 mousePos){
		this.transform.position = mousePos;
		if(this.transform.localPosition.x<0f){
			this.transform.localPosition = new Vector2 (0f, this.transform.localPosition.y);
		}
		if(this.transform.localPosition.x>80f){
			this.transform.localPosition = new Vector2 (80f, this.transform.localPosition.y);
		}
		if(this.transform.localPosition.y>0){
			this.transform.localPosition = new Vector2 (this.transform.localPosition.x,0);
		}
		if(this.transform.localPosition.y<-80f){
			this.transform.localPosition = new Vector2 (this.transform.localPosition.x,-80f);
		}
	}

	public void Hue(Vector3 mousePos){
		this.transform.position = new Vector2 (this.transform.position.x, mousePos.y);
		if(this.transform.localPosition.y>0){
			this.transform.localPosition = new Vector2 (this.transform.localPosition.x,0);
		}
		if(this.transform.localPosition.y<-80f){
			this.transform.localPosition = new Vector2 (this.transform.localPosition.x,-80f);
		}
	}
		
}

然后需要实现点击Saturation和Hue两个Image,两个Dot分别到点击的位置。
创建C#脚本,将脚本挂到Saturation和Hue。如下代码即可使SatDot和HueDot到鼠标点击位置。

using UnityEngine;
using UnityEngine.EventSystems;
public class ClickImage : MonoBehaviour ,IPointerClickHandler
{
	public DragPoint dragPoint;
	void IPointerClickHandler.OnPointerClick (PointerEventData eventData)
	{
		if(this.name=="Saturation"){
			dragPoint.Saturation (eventData.position);
		}else{
			dragPoint.Hue(eventData.position);
		}
	}
	

再新建一个脚本,可以使shader之间相互传值。

using UnityEngine;

public class ColorPicker : MonoBehaviour
{
	public Material satMat;
	public Material colorMat;
	
	public void GetHueColor(float hueValue){
		satMat.SetFloat ("_Value",hueValue);

	}

	public void GetSaturationColor(float x,float y,float hueValue){
		colorMat.SetFloat ("_Value",hueValue);
		colorMat.SetFloat ("_U",x);
		colorMat.SetFloat ("_V",y);
	}
}

最后,在DragDot 脚本中计算出拖动Dot时,Dot相对于父节点的比例,在调用GetHueColor方法和GetSaturationColor方法。

附上 完整的DragDot 的代码

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class DragPoint : MonoBehaviour,IDragHandler,IBeginDragHandler,IEndDragHandler
{
    public void OnDrag(PointerEventData eventData)
    {
		if(this.transform.parent.name=="Saturation"){
			Saturation (eventData.position);
		}else{
			Hue(eventData.position);
		}
    }

	public  void Saturation(Vector3 mousePos){

		if (this.name == "HueDot")
			return;

		this.transform.position = mousePos;
		if(this.transform.localPosition.x<0f){
			this.transform.localPosition = new Vector2 (0f, this.transform.localPosition.y);
		}
		if(this.transform.localPosition.x>80f){
			this.transform.localPosition = new Vector2 (80f, this.transform.localPosition.y);
		}
		if(this.transform.localPosition.y>0){
			this.transform.localPosition = new Vector2 (this.transform.localPosition.x,0);
		}
		if(this.transform.localPosition.y<-80f){
			this.transform.localPosition = new Vector2 (this.transform.localPosition.x,-80f);
		}

		float x = Mathf.Abs (this.transform.localPosition.x) / 80f;
		float y = Mathf.Abs (this.transform.localPosition.y) / 80f;
		//ColorPicker中创建单例
		//hueValue是在ColorPicker中初始换
		ColorPicker._instance.GetSaturationColor (x, y,ColorPicker._instance.hueValue);

	}

	public void Hue(Vector3 mousePos){
		this.transform.position = new Vector2 (this.transform.position.x, mousePos.y);
		if(this.transform.localPosition.y>0){
			this.transform.localPosition = new Vector2 (this.transform.localPosition.x,0);
		}
		if(this.transform.localPosition.y<-80f){
			this.transform.localPosition = new Vector2 (this.transform.localPosition.x,-80f);
		}
		
		float rate = (Mathf.Abs(this.transform.localPosition.y)  - 2) / 80f;
		ColorPicker._instance.hueValue = rate;
		ColorPicker._instance.GetHueColor (rate);
		GameObject dot = GameObject.Find ("SatDot");
		dot.GetComponent<DragPoint> ().Saturation (dot.transform.position);
	}
		
}

PC、安卓完美实现。还有一些其他功能,后续开发中…

2015-04-16 09:57:32 u012842807 阅读数 10804
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    591 人正在学习 去看看 刘国柱

很所的时候我们想改变一串字符串中某几个字体的颜色 那该如何实现这小功能呢?

其实很简单 就是在要改变字体两边加上如下的玩意 。


UGUI代码改变字体的颜色 与NGUI不同,这里就不多说 直接上例子。

UGUI中: <color=#0000ff>要改变的字的颜色</color>  

NGUI中:[0000ff]要改变的字体颜色[-]



我室友的是一个技术大神
这里分享他的网站 http://www.feehi.com 有需求的大家可以进去看看 这是他的博客网http://blog.feehi.com/

2013-08-20 16:48:27 braveyoung123 阅读数 1979
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    591 人正在学习 去看看 刘国柱

虽然unity支持.Net2.0(sub)框架,但是对于有一些dll。还是不支持的!

比如:System.Drawing.dll就是一个了。在这个组件中,MS是支持不同进制的颜色转换的。

Color color = ColorTranslator.FromHtml("#000000");

原因:

System.Drawing与Unity3d使用的图形库(OpenGL/DirectX)不兼容!

大家都知道在unity3d中,Color、Color32的构造都是需要Float数据的。

eg: Color myColor = new Color(float r, float g, float b,float alpha);

这样的使用方式有的时候就不方便了,因为我们使用的颜色表示方式都是16进制的。

如图:


橙黄色 #FFCC00

需要什么颜色只要找一下颜色对照表就行了。

下面就是颜色转换器了:

ColorConventor.cs



当然使用方式就很简单了!



最总显示效果如下:文字显示为天蓝色!


结束语:

Enjoy!

2016-03-27 15:05:34 MAOMAOXIAOHUO 阅读数 6049
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    591 人正在学习 去看看 刘国柱

使用RGB的十六进制来设置颜色,在工作中减少了颜色的输入次数。在项目使用开发同事从美术同事拿到的颜色表基本上都以十六进制来表示。

本人目前用版本为Unity3d4.6.7,未发现在Color面板中能进行十六进制颜色转换,也未发现能通过编写扩展代码调整Color在Inspector中的GUI显示。

  • Unity3d4.6.7
  • NGUI3.8.2

下文假设你已经对Untiy3dEditor.Editor和NGUI有基本认识

NGUI作用Unity3d最为热门的UI插件,大部分控件继承基类UIWidget,且已包含了Color属性。下文将修改UIWidgetInspector.cs,将RGB转换为十六进制,并且可以UIWidget的Inspector面板中转换
这里写图片描述
*最终结果如下图
这里写图片描述

—java
UIWidgetInspector.cs找到如下方法

    static public void DrawColor (SerializedObject so, UIWidget w)
    {
        if ((w.GetType() != typeof(UIWidget)))
        {
            NGUIEditorTools.DrawProperty("Color Tint", so, "mColor", GUILayout.MinWidth(20f));
        }
        else if (so.isEditingMultipleObjects)
        {
            NGUIEditorTools.DrawProperty("Alpha", so, "mColor.a", GUILayout.Width(120f));
        }
        else
        {
            GUI.changed = false;
            float alpha = EditorGUILayout.Slider("Alpha", w.alpha, 0f, 1f);

            if (GUI.changed)
            {
                NGUIEditorTools.RegisterUndo("Alpha change", w);
                w.alpha = alpha;
            }
        }
    }

调整为如下

// 记录是否使用十六进制
static bool hexColor = false;
static public void DrawColor (SerializedObject so, UIWidget w)
    {
        if ((w.GetType() != typeof(UIWidget)))
        {
            Color color = w.color;
            hexColor = EditorGUILayout.Toggle("HexColor", hexColor);
            if (hexColor)
            {
                Color32 c32 = (Color32) w.color;
                string hex = EditorGUILayout.TextField(string.Format("{0:X2}{1:X2}{2:X2}", c32.r, c32.g, c32.b));

                if (hex.Length >= 6)
                {
                    byte r = 0;
                    byte g = 0;
                    byte b = 0;

                    byte.TryParse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber, null, out r);
                    byte.TryParse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber, null, out g);
                    byte.TryParse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber, null, out b);

                    so.FindProperty("mColor").colorValue = new Color32(r, g, b, c32.a);
                }
            }
            else
            {
                NGUIEditorTools.DrawProperty("Color Tint", so, "mColor", GUILayout.MinWidth(20f));
            }
        }
        else if (so.isEditingMultipleObjects)
        {
            NGUIEditorTools.DrawProperty("Alpha", so, "mColor.a", GUILayout.Width(120f));
        }
        else
        {
            GUI.changed = false;
            float alpha = EditorGUILayout.Slider("Alpha", w.alpha, 0f, 1f);

            if (GUI.changed)
            {
                NGUIEditorTools.RegisterUndo("Alpha change", w);
                w.alpha = alpha;
            }
        }
    }

到目前为此我们只是仅仅为NGUI UIWidget基类的控件增加了十六进制颜色格式转换。并没有在Unity3d更底层的地方进入修改。最根本办法 ,我希望能直接做在Unity3d Color面板里面
这里写图片描述

================2016-6-4===========================
发现Unity3d 5.3.3版本已有十六进制的颜色转换了。至于哪个开始有,没去考究。如下图是Unity3d 5.3.3是的Color面板
这里写图片描述

2017-06-26 14:05:07 qq_33731301 阅读数 1316
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    591 人正在学习 去看看 刘国柱

在做游戏使用NGUI过程中,经常会遇到更改UILabel字体的颜色,手动更改Label字体颜色不仅效率很低,而且有部分Label处于未激活状态,无法找到全部Label。为此需要扩展Unity3d编辑器,写一个批量处理程序,在编辑状态更改字体颜色。主要涉及到两部分内容,一是如何扩展Unity3d编辑器,二是如何遍寻UIroot下的所有UILabel(包括未激活状态下的),下面贴出了源码。

一、在工程文件下建立一个Editor文件夹,新建一个Change_FontColor脚本,在Editor下的脚本会显示在Untiy3d编辑器中。

脚本位置

二、编辑Change_FontColor脚本,代码如下:

using UnityEngine;

using System.Collections;

using UnityEditor;

 

public class Change_FontColor : Editor {

    [MenuItem("Assets/ChangeFontColor")]

    public static void ChangeFont()

    {

        //获得UIroot

        GameObject myUIroot =(GameObject)Selection.activeObject;

        //更换特定UIlabel的字体颜色

        UILabel[] labels =myUIroot.GetComponentsInChildren<UILabel>(true);

        int length = labels.Length;

        for (int i = 0; i < length; ++i)

        {

            if (labels[i].GetComponent<UILabel>().color == new Color(0,0,0))//黑色

            {

                labels[i].GetComponent<UILabel>().color = new Color(1,1,1);//白色

            }

        }

    }

}

首先,Change_FontColor类继承于Editor,[MenuItem("Assets/ChangeFontColor")]是按钮显示的位置在Assets/ChangeFontColor 更换UILabel颜色的在

public static void ChangeFont ()方法中实现

 

使用方式:鼠标选中UIroot,点击Assets/ChangeFontColor按钮就可实现效果,如下图

更改后黑色的label改为了白色。

 

更改前效果图


更改后效果图

Unity3d中的属性整理

博文 来自: fenrir_sun
没有更多推荐了,返回首页