只有一些小的改进,没有修改方法逻辑的本质
- 将原来的
var mapScene = new SceneConfig()
删去,这里没必要多余new一个对象,因为后面都会给mapScene
赋值
- 把
mapSceneId = mapScene.Id
删去,并修改下一行,修改为SceneConfig mapScene = SceneConfigData.Instance.Get(mapSceneId);
,没有必要为一个临时变量赋值
- 按照自己的代码风格修改了一点,例如
,
后加空格,else
换行,省略了else
的大括号,可以明确类型的变量声明不用var
public static SceneConfig GetMapScene(SessionPlayerComponent sessionPlayer, int mapNum, uint zoneId)
{
//这里不需要多余的赋值一个new SceneConfig()
//获取该玩家在mapNum这个场景的mapSceneId
var mapSceneId = sessionPlayer.GetMapSceneId(mapNum);
if (mapSceneId == 0) // 没有登录此地图的记录
{
// 如果有很多地图场景分别不同的map主机,那就要通过地图配置文件,取得目标map的SceneConfig
// 这里练习,就获取本区的随机一个地图mapSceneConfig
SceneConfig mapScene = SceneHelper.GetSceneRandom(SceneType.Map, zoneId);
// 记录登录此地图的mapSceneId,直接传入mapScene.Id,无需再将其赋给mapSceneId
sessionPlayer.MapSceneIds.Add(mapNum, mapScene.Id);
}
else
SceneConfig mapScene = SceneConfigData.Instance.Get(mapSceneId);
return mapScene;
}
当然,其实有放飞自我的缩写法,就是把mapScene
直接用三目运算符来赋值,这样甚至可以省掉else
代码块
将if
代码块的内容缩到一行,甚至可以省略if
的大括号
//放飞自我版写法,缩都可以缩,给我狠狠的滴缩!!!
//个人认为这不利于后续拓展代码(划掉)好孩子不要学(划掉)
public static SceneConfig GetMapScene(SessionPlayerComponent sessionPlayer, int mapNum, uint zoneId)
{
var mapSceneId = sessionPlayer.GetMapSceneId(mapNum);
//原来的if...else写法缩写为三目运算符,当mapSceneId等于0时,随机获取本区的随机一个地图mapSceneConfig,否则直接通过mapSceneId获取SceneConfig对象
SceneConfig mapScene = mapSceneId == 0 ? SceneHelper.GetSceneRandom(SceneType.Map, zoneId) : SceneConfigData.Instance.Get(mapSceneId);
//若mapSceneId为0,记录登录此地图的mapScene.Id
if (mapSceneId == 0)
sessionPlayer.MapSceneIds.Add(mapNum, mapScene.Id);
return mapScene;
}
完,不要问我为啥代码块渲染不出来,貌似[op],[\op]内部的代码块不会渲染这种,嫌丑轻喷