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三个函数需要重点分析。本篇随便就到此结束吧。

posted on 2012-06-05 16:11  谭宇(tony)  阅读(856)  评论(0编辑  收藏  举报