Maxscript_基础_回调函数
  • Maxscript的回调函数其实就是3dsMax提供的事件发布机制,可以把自己写的函数注册到事件中,3dsMax在执行了某项操作时会发布这些事件,然后之前注册的函数就会被调用

  • 例子:当视图改变的时候,就会打印当前窗口的矩阵

-- 用于测试的回调函数
fn fnPrintViewportMT=
(
    -- 打印当前视图的矩阵
    print (viewport.GetTM()) 
)

-- 注册函数到回调函数:#viewportChange是当视图改变时的事件
callbacks.addScript #viewportChange "fnPrintViewportMT()" id:#TestCallBacks

-- 如果要删除回调函数
-- callbacks.removeScripts id:#TestCallBacks

关于可用的回调函数事件信息,具体查询:Maxscript.chm

  • 关键字: General Event Callback Mechanism

  • 里面也有关于 添加,删除 回调函数的例子

  • 要注意的是,自己写的函数是正确的,如果不确定,最好加上try()catch(),否则容易出现 不停的弹错误窗口的现象!


应用例子

  • 单位锁功能,每次 Reset 场景的时候,单位会自动重设,防止意外的修改

-- 单位设置
fn fnUnitLock=
(
    -- 在此设置好单位
    units.SystemType  = #centimeters
    units.SystemScale = 1.0
    units.DisplayType = #Metric
    units.MetricType  = #Meters)

    
-- 尝试删除已经有的 回调函数
fn fnUnitUnLock=
(  try(execute "callbacks.removeScripts id:#UnitLock")catch()



-- 添加到回调:注册到场景重设事件
callbacks.addScript #systemPostReset "fnUnitLock()" id:#UnitLock


作者:TAZORN

著作权归作者所有





【相关阅读】:

Maxscript_基础_回调函数http://tk.v5cg.com/help/246.html 

Maxscript_基础_材质处理http://tk.v5cg.com/help/247.html 

Maxscript_基础_修改器操作http://tk.v5cg.com/help/248.html 

Maxscript_基础_创建窗口http://tk.v5cg.com/help/249.html 

Maxscript_基础_遍历与递归http://tk.v5cg.com/help/250.html 

Maxscript_与DotNet交互http://tk.v5cg.com/help/251.html 


【上传发布插件】:

编写3DMAX插件到发布上线全流程http://tk.v5cg.com/help/147.html 

代码上传与工具发布http://tk.v5cg.com/help/99.html 

代码发布,部署实例参考http://tk.v5cg.com/help/140.html 

PS【动作库】代码部署指南http://tk.v5cg.com/help/141.html 

CG云盘 - 开发者使用说明http://tk.v5cg.com/help/34.html