main函数为脚本的第二个入口函数(在此之前我们分析过一个负责房间规则的config函数),负责这个场景规则的初始化工作,下面以人族无敌的main函数作为案例分析下脚本的初始化流程:
1 //*************************************************************************** 2 //* 3 //* Main Initialization 4 //* 5 //*************************************************************************** 6 7 //=========================================================================== 8 function main takes nothing returns nothing 9 // 设置相机参数 10 call SetCameraBounds( -7424.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), -7680.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM), 7424.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), 7168.0 - GetCameraMargin(CAMERA_MARGIN_TOP), -7424.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), 7168.0 - GetCameraMargin(CAMERA_MARGIN_TOP), 7424.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), -7680.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM) ) 11 // 设置地表和模型的光照方案 12 call SetDayNightModels( "Environment\\DNC\\DNCLordaeron\\DNCLordaeronTerrain\\DNCLordaeronTerrain.mdl", "Environment\\DNC\\DNCLordaeron\\DNCLordaeronUnit\\DNCLordaeronUnit.mdl" ) 13 // 设置环境音效 14 call NewSoundEnvironment( "Default" ) 15 // 设置白天音效 16 call SetAmbientDaySound( "LordaeronSummerDay" ) 17 // 设置夜晚音效 18 call SetAmbientNightSound( "LordaeronSummerNight" ) 19 // 设定音乐列表 (使用随机的开始音乐) 20 call SetMapMusic( "Music", true, 0 ) 21 // 初始化音效 22 call InitSounds( ) 23 // 创建区域 24 call CreateRegions( ) 25 // 创建相机 26 call CreateCameras( ) 27 // 创建所有物品 28 call CreateAllItems( ) 29 // 创建所有对象 30 call CreateAllUnits( ) 31 // 初始化公共基础信息 32 call InitBlizzard( ) 33 // 初始化全局变量 34 call InitGlobals( ) 35 // 初始化触发器 36 call InitCustomTriggers( ) 37 // 场景初始化 38 call RunInitializationTriggers( ) 39 40 endfunction
整个的初始化流程比较清晰,其中InitBlizzard、InitCustomTriggers和RunInitialtionTriggers三个函数需要重点分析。本篇随便就到此结束吧。
以能立能达为体,以不怨不尤为用。