Unity记一次Amplify Shader Editor-编辑器扩展开发Canvas框架

Posted avi9111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity记一次Amplify Shader Editor-编辑器扩展开发Canvas框架相关的知识,希望对你有一定的参考价值。

 

目录

代码初略分析

框架源码入口

框架源码ONGUI

框架源码 主绘制实例

参考:


代码初略分析

其实没有什么分析,要是有空,也可以出个图分析一下的

下面只是一些代码记录

也没什么好说的,代码不多,其中随便一个代码就6000行而已

框架源码入口

		[MenuItem( "Window/Amplify Shader Editor/Open Canvas", false, 1000 )]
		static void OpenMainShaderGraph()
		{
			if( IOUtils.AllOpenedWindows.Count > 0 )
			{
				AmplifyShaderEditorWindow currentWindow = CreateTab( "Empty", UIUtils.ShaderIcon );
				UIUtils.CurrentWindow = currentWindow;
				currentWindow.CreateNewGraph( "Empty" );
				currentWindow.Show();
			}
			else
			{
				AmplifyShaderEditorWindow currentWindow = OpenWindow( "Empty", UIUtils.ShaderIcon );
				currentWindow.CreateNewGraph( "Empty" );
				//currentWindow.Show();
			}
		}

 

框架源码ONGUI

 
 
 

由于已经非常了解Editor,IMGUI,所以直接看ongui()

界面的这4个,还有其他区域分别对应 :

 

**m_mainGraphInstance.Draw(
 m_modeWindow.Draw(  
 m_tipsWindow.Draw(
 m_toolsWindow.Draw(
*m_nodeParametersWindow.Draw(
 m_contextPalette.Draw(
 m_nodeParametersWindow.Draw(

框架源码 主绘制实例类

初始化

		public void Reset()
		{
			if( m_mainGraphInstance == null )
			{
				m_mainGraphInstance = CreateInstance<ParentGraph>();
				m_mainGraphInstance.Init();
				m_mainGraphInstance.ParentWindow = this;
				m_mainGraphInstance.SetGraphId( 0 );
			}
			m_mainGraphInstance.ResetEvents();
			m_mainGraphInstance.OnNodeEvent += OnNodeStoppedMovingEvent;
			m_mainGraphInstance.OnMaterialUpdatedEvent += OnMaterialUpdated;
			m_mainGraphInstance.OnShaderUpdatedEvent += OnShaderUpdated;
			m_mainGraphInstance.OnEmptyGraphDetectedEvt += OnEmptyGraphDetected;
			m_mainGraphInstance.OnNodeRemovedEvent += m_toolsWindow.OnNodeRemovedFromGraph;
			m_outdatedShaderFromTemplateLoaded = false;
			GraphCount = 1;

			FullCleanUndoStack();
			m_performFullUndoRegister = true;
			m_toolsWindow.BorderStyle = null;
			m_selectionMode = ASESelectionMode.Shader;
			ResetCameraSettings();
			UIUtils.ResetMainSkin();
			m_duplicatePreventionBuffer.ReleaseAllData();
			if( m_genericMessageUI != null )
				m_genericMessageUI.CleanUpMessageStack();
		}

涉及引用

下面伪代码,不完全是该类或方法的实际命名

是否反向引用方法
1EditorWindow
public Shader CreateNewGraph( string name )
   

暂停一下,晚上再补

参考:

Amplify Creations 公司,略屌

以上是关于Unity记一次Amplify Shader Editor-编辑器扩展开发Canvas框架的主要内容,如果未能解决你的问题,请参考以下文章

Unity记一次Amplify Shader Editor入门渲染案例中文解释——UV流动动画

Unity记一次Amplify Shader Editor入门渲染——ZTest,ZWrite,Cull Mode

unity再记一次shader渲染性能工具

Unity Amplify Shader Editor-编辑器扩展开发Canvas框架

Shader Graph 和 Amplify Shader Editor 节点文档地址

Unity记一次TA的二次元风格渲染