小地图代码:最难的部分是使用函数 GUIUtility.RotateAroundPivot 来旋转玩家图标 使用后需重置矩阵var backGround:Texture;//小地图背景var playerMiniLogo:Texture;//玩家标记(可旋转)var NpcMiniLogo:Texture;//NPC标记 如建筑var DirectionArrow:Texture;var Player:Transform;//玩家所在位置var arrowAngle:float=0;//real map size(3d world units)var mapWidth:float=200;//场景实际宽var mapHeight:float=200;//场景实际高//minimap size(texture)var miniMapWidth:float=256;//小地图宽var miniMapHeight:float=256;//小地图高private var backAlpha=0.3;//背景透明度var NpcTags="Npc";private var DrawNpcs:GameObject[];function Start(){ //miniMapWidth=backGround.width; //miniMapHeight=backGround.height; DrawNpcs=GameObject.FindGameObjectsWithTag(NpcTags);}function OnGUI () { DrawMiniMap(Screen.width-miniMapWidth,Screen.height-miniMapHeight,16);}//绘制小地图x,y,角色点显示大小function DrawMiniMap(LeftX,LeftY,PointSize){ GUI.depth=-10; GUI.color=Color(1,1,1,backAlpha); GUI.DrawTexture(Rect(LeftX,LeftY,miniMapWidth,miniMapHeight),backGround); //draw npcs if(DrawNpcs) { for(var npc in DrawNpcs) { GUI.color=Color(1,1,1,1); GUI.DrawTexture(Rect(LeftX+(npc.transform.position.x/mapWidth)*miniMapWidth-(PointSize/2),LeftY+(miniMapHeight-(npc.transform.position.z/mapHeight)*miniMapHeight-(PointSize/2)),PointSize,PointSize),NpcMiniLogo); } } //draw direction arrow 绘制玩家图标可旋转箭头 if(DirectionArrow) { GUI.depth=20; GUI.color=Color(1,1,1,1); GUIUtility.RotateAroundPivot(Player.eulerAngles.y,Vector2(LeftX+(Player.position.x/mapWidth)*miniMapWidth,LeftY+(miniMapHeight-(Player.position.z/mapHeight)*miniMapHeight))); GUI.DrawTexture(Rect(LeftX+(Player.position.x/mapWidth)*miniMapWidth-(DirectionArrow.width/2),LeftY+(miniMapHeight-(Player.position.z/mapHeight)*miniMapHeight-(DirectionArrow.height/2)),DirectionArrow.width,DirectionArrow.height),DirectionArrow); GUI.matrix=Matrix4x4.identity; } //GUI.depth=20; //GUI.color=Color(1,1,1,1); //GUI.DrawTexture(Rect(LeftX+(Player.position.x/mapWidth)*miniMapWidth-(PointSize/2),miniMapHeight-(Player.position.z/mapHeight)*miniMapHeight-(PointSize/2),PointSize,PointSize),playerMiniLogo); }