设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5089|回复: 6
打印 上一主题 下一主题

[原创发布] 支援RMXP的Tilemap

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
462 小时
注册时间
2007-7-30
帖子
643
跳转到指定楼层
1
发表于 2009-7-5 14:33:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 david50407 于 2009-7-5 14:55 编辑

終於將RMXP的Tilemap研究出來了
跟原版的差不多
但在使用flash_data的部份有點卡
希望能討論下
畢竟RUBY不能贏VC
以下是腳本
  1. class Tilemap
  2.   WIN_W = 640
  3.   WIN_H = 480
  4.   AREA_W = 32
  5.   AREA_H = 32
  6.   AREA_X = WIN_W / AREA_W
  7.   AREA_Y = WIN_H / AREA_H
  8.   ANI_T = 20  #動畫等待時間(單位:畫格)
  9.   FLA_T = 4   #閃爍等待時間(單位:畫格)
  10.   FLA_O=[110,100,90,80,70,80,90,100] #畫面閃爍變化
  11.   #畫自動元件用
  12.   AUTO_XY = [
  13.     [8, 8, 8, 8], [3, 8, 8, 8], [8, 3, 8, 8], [3, 3, 8, 8],
  14.       [8, 8, 8, 3], [3, 8, 8, 3], [8, 3, 8, 3], [3, 3, 8, 3],
  15.       [8, 8, 3, 8], [3, 8, 3, 8], [8, 3, 3, 8], [3, 3, 3, 8],
  16.       [8, 8, 3, 3], [3, 8, 3, 3], [8, 8, 3, 3], [3, 3, 3, 3],
  17.       [7, 7, 7, 7], [7, 3, 7, 7], [7, 7, 7, 3], [7, 3, 7, 3],
  18.       [5, 5, 5, 5], [5, 5, 5, 3], [5, 5, 3, 5], [5, 5, 3, 3],
  19.       [9, 9, 9, 9], [9, 9, 3, 9], [3, 9, 9, 9], [3, 9, 3, 9],
  20.       [11, 11, 11, 11], [3, 11, 11, 11], [11, 3, 11, 11], [3, 3, 11, 11],
  21.       [7, 9, 7, 9], [5, 5, 11, 11], [4, 4, 4, 4], [4, 4, 4, 3],
  22.       [6, 6, 6, 6], [6, 6, 3, 6], [12, 12, 12, 12], [3, 12, 12, 12],
  23.       [10, 10, 10, 10], [10, 3, 10, 10], [4, 6, 4, 6], [4, 4, 10, 10],
  24.       [10, 12, 10, 12], [6, 6, 12, 12], [4, 6, 10, 12], [1, 1, 1, 1]
  25.   ]
  26.   #--------------------------------------------------------------------------
  27.   # ● 定義外部變數
  28.   #--------------------------------------------------------------------------
  29.   attr_accessor :autotiles
  30.   attr_accessor :tileset
  31.   attr_reader :viewport
  32.   #--------------------------------------------------------------------------
  33.   # ● 初始化物件
  34.   # 內部使用以 @@ 開頭
  35.   #--------------------------------------------------------------------------
  36.   def initialize(viewport = Viewport.new(0,0,WIN_W,WIN_H))
  37.     @autotiles = []
  38.     @tileset = nil
  39.     @map_data = nil
  40.     @flash_data = nil
  41.     @priorities = nil
  42.     @visible = true
  43.     @ox = 0
  44.     @oy = 0
  45.     @viewport = viewport
  46.    
  47.     @@sprite = {} #元件Sprite
  48.     @@cache = {} #元件Cache
  49.     @@ani_switch = {} #動畫開關
  50.     @@count = 0 #當前顯示動畫
  51.     @@counting = 0 #動畫等待畫格
  52.     @@flash_layer = nil #畫面閃爍用
  53.     @@flash_count = 0 #當前閃爍動畫
  54.     @@flash_counting = 0 #閃爍等待畫格
  55.     @@last_ox = 0
  56.     @@last_oy = 0
  57.     @@disposed = false
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 釋放
  61.   #--------------------------------------------------------------------------
  62.   def dispose
  63.     return if @@disposed
  64.     for i in @@cache.values
  65.       if i.is_a?(Bitmap)
  66.         i.dispose
  67.       else
  68.         for j in i.values
  69.           j.dispose
  70.         end
  71.       end
  72.     end
  73.     for i in @@sprite.values
  74.       i.dispose
  75.     end
  76.     @@flash_layer.dispose if @@flash_layer != nil
  77.     @@flash_layer.bitmap.dispose if @@flash_layer != nil
  78.     @@disposed = true
  79.   end
  80.   def dispose?
  81.     return @@disposed
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 載入地圖資訊
  85.   # 載入後繪製地圖
  86.   #--------------------------------------------------------------------------
  87.   def map_data
  88.     return @map_data
  89.   end
  90.   def map_data=(data)
  91.     @map_data = data
  92.     return if @map_data.nil?
  93.     # 建立地圖元件Cache(方法一) BEGIN
  94.     # 地圖較大時不適用
  95.     #for x in 0...@map_data.xsize
  96.     #  for y in 0...@map_data.ysize
  97.     #    for l in 0..2
  98.     #      cache_bitmap(@map_data[x, y, l])
  99.     #    end
  100.     #  end
  101.     #end
  102.     # 建立地圖元件Cache(方法一) END
  103.     # 建立地圖元件Cache(方法二) BEGIN
  104.     # 元件圖較大時不適用
  105.     for auto in 0..6
  106.       next if @autotiles[auto].nil?
  107.       for i in 0...48
  108.         cache_bitmap(auto * 48 + i)
  109.       end
  110.     end
  111.     if @tileset != nil
  112.       for y in [email protected] / AREA_H
  113.         yy = y * 8
  114.         for x in 0...8
  115.           cache_bitmap(yy + x + 384)
  116.         end
  117.       end
  118.     end
  119.     # 建立地圖元件Cache(方法二) END
  120.     # 描繪地圖元件 BEGIN
  121.     range_x = (@ox + WIN_W) / AREA_W
  122.     range_y = (@oy + WIN_H) / AREA_H
  123.     range_x = [range_x, WIN_W / AREA_W - 1].min if @map_data.xsize * AREA_W <= WIN_W
  124.     range_y = [range_y, WIN_H / AREA_H - 1].min if @map_data.ysize * AREA_H <= WIN_H
  125.     for x in (@ox / AREA_W - 1)..range_x
  126.       for y in (@oy / AREA_H - 1)..range_y
  127.         for l in 0..2
  128.           draw(x, y, l)
  129.         end
  130.       end
  131.     end
  132.     # 描繪地圖元件 END
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 載入地圖優先度
  136.   # 載入後重整地圖元件Z座標
  137.   #--------------------------------------------------------------------------
  138.   def priorities
  139.     return @priorities
  140.   end
  141.   def priorities=(value)
  142.     @priorities = value
  143.     return if @priorities.nil?
  144.     for x in ([@ox / AREA_W - 1, 0].max)..((@ox + WIN_W) / AREA_W)
  145.       for y in ([@oy / AREA_H - 1, 0].max)..((@oy + WIN_H) / AREA_H)
  146.         for l in 0..2
  147.           next if @@sprite[[x, y, l]].nil?
  148.           id = @map_data[x, y, l]
  149.           next if id.nil?
  150.           next if id == 0
  151.           z = @priorities[id] == 0 ? 0 : 32 * (1 + @@sprite[[x, y, l]].y / AREA_H + @priorities[id])
  152.           z = 0 if z < 0
  153.           @@sprite[[x, y, l]].z = z
  154.         end
  155.       end
  156.     end
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 建立地圖元件Cache
  160.   #--------------------------------------------------------------------------
  161.   def cache_bitmap(id)
  162.     if @@cache[id].nil?
  163.       if id < 384 #自動元件的情況
  164.         bitmapid = id / 48 - 1
  165.         @@cache[id] = {}
  166.         @@cache[id][0] = get_bitmap_a(id, bitmapid)
  167.         if @autotiles[bitmapid].width > AREA_W * 3
  168.           anis = @autotiles[bitmapid].width / AREA_W / 3
  169.           for i in 1...anis
  170.             @@cache[id][i] = get_bitmap_a(id, bitmapid, i)
  171.           end
  172.         end
  173.       else #一般元件的情況
  174.         @@cache[id] = get_bitmap(id)
  175.       end
  176.     end
  177.     return @@cache[id][0] if @@cache[id].is_a?(Hash)
  178.     return @@cache[id]
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ● 取得地圖元件Bitmap
  182.   # get_bitmap     : 取得一般地圖元件Bitmap
  183.   # get_bitmap_a : 取得自動地圖元件Bitmap
  184.   #--------------------------------------------------------------------------
  185.   def get_bitmap(id)
  186.     bitmap = Bitmap.new(AREA_W, AREA_H)
  187.     rect = Rect.new((id - 384) % 8 * AREA_W, (id - 384) / 8 * AREA_H, AREA_W, AREA_H)
  188.     bitmap.blt(0, 0, @tileset, rect)
  189.     return bitmap
  190.   end
  191.   def get_bitmap_a(id, bitmapid, ani = 0)
  192.     bitmap = Bitmap.new(AREA_W, AREA_H)
  193.     pic_id = id % 48
  194.     for i in 0..3
  195.       rect_x = (AUTO_XY[pic_id][i] - 1) % 3
  196.       rect_y = (AUTO_XY[pic_id][i] - 1) / 3
  197.       rect_x *= AREA_W
  198.       rect_y *= AREA_H
  199.       x = i % 2
  200.       y = i / 2
  201.       x *= AREA_W / 2
  202.       y *= AREA_H / 2
  203.       rect = Rect.new(rect_x + x + (ani * AREA_W * 3), rect_y + y, AREA_W / 2, AREA_H / 2)
  204.       bitmap.blt(x, y, @autotiles[bitmapid], rect)
  205.     end
  206.     return bitmap
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 繪製地圖元件
  210.   #--------------------------------------------------------------------------
  211.   def draw(x, y, l)
  212.     x0 = x
  213.     y0 = y
  214.     # 數值修正
  215.     x -= @map_data.xsize if x >= @map_data.xsize
  216.     x += @map_data.xsize if x < 0
  217.     y -= @map_data.ysize if y >= @map_data.ysize
  218.     y += @map_data.ysize if y < 0
  219.     id = @map_data[x, y, l]
  220.     return if id == 0
  221.     unless @@sprite[[x, y, l]].nil?
  222.       @@sprite[[x, y, l]].x = x0 * AREA_W - @ox
  223.       @@sprite[[x, y, l]].y = y0 * AREA_H - @oy
  224.       return if @priorities.nil?
  225.       z = @priorities[id] == 0 ? 0 : 32 * (1 + @@sprite[[x, y, l]].y / AREA_H + @priorities[id])
  226.       z = 0 if z < 0
  227.       @@sprite[[x, y, l]].z = z
  228.       return
  229.     end
  230.     @@sprite[[x, y, l]] = Sprite.new(@viewport)
  231.     @@sprite[[x, y, l]].x = x0 * AREA_W - @ox
  232.     @@sprite[[x, y, l]].y = y0 * AREA_H - @oy
  233.     @@sprite[[x, y, l]].z = l
  234.     @@sprite[[x, y, l]].bitmap = cache_bitmap(id)
  235.     if id < 384
  236.       if @@cache[id].length > 1
  237.         #動畫
  238.         @@ani_switch[[x, y, l]] = true
  239.         @@sprite[[x, y, l]].bitmap = @@cache[id][@@count % @@cache[id].length]
  240.       end
  241.     end
  242.     return if @priorities.nil?
  243.     z = @priorities[id] == 0 ? 0 : 32 * (1 + @@sprite[[x, y, l]].y / AREA_H + @priorities[id])
  244.     z = 0 if z < 0
  245.     @@sprite[[x, y, l]].z = z
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 繪製地圖元件閃爍
  249.   #--------------------------------------------------------------------------
  250.   def draw_flash
  251.     return if @flash_data.nil?
  252.     return if @flash_data.xsize <= -1 && @flash_data..ysize <= -1
  253.     if @@flash_layer.nil?
  254.       @@flash_layer = Plane.new(@viewport)
  255.       @@flash_layer.blend_type = 1
  256.       @@flash_layer.bitmap = Bitmap.new(@flash_data.xsize * AREA_W, @flash_data.ysize * AREA_H) if @@flash_layer.bitmap.nil?
  257.     end
  258.     @@flash_layer.z = 1
  259.     tmpcolor = Color.new(0,0,0,0)
  260.     for x in 0...@flash_data.xsize
  261.       for y in 0...@flash_data.ysize
  262.         rgb = {}
  263.         %w(r g b).inject(@flash_data[x, y]) {|a,b| rest, rgb[b] = a.divmod(16); rest}
  264.         next if rgb == {'r'=>0,'g'=>0,'b'=>0}
  265.         tmpcolor.set(rgb['r']*16,rgb['g']*16,rgb['b']*16)
  266.         @@flash_layer.bitmap.fill_rect(x*AREA_W,y*AREA_H,AREA_W,AREA_H,tmpcolor)
  267.       end
  268.     end
  269.     @@flash_layer.opacity=FLA_O[@@flash_count]
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● 設定地圖座標
  273.   #--------------------------------------------------------------------------
  274.   def ox
  275.     return @ox
  276.   end
  277.   def oy
  278.     return @oy
  279.   end
  280.   def ox=(ox)
  281.     return if @ox == ox
  282.     @@last_ox = @ox if @@last_ox == @ox
  283.     @ox = ox
  284.     @@flash_layer.ox = ox % WIN_W if @@flash_layer != nil
  285.     return @ox
  286.   end
  287.   def oy=(oy)
  288.     return if @oy == oy
  289.     @@last_oy = @oy if @@last_oy == @oy
  290.     @oy = oy
  291.     @@flash_layer.oy = oy % WIN_H if @@flash_layer != nil
  292.     return @oy
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ● 設定地圖顯示
  296.   #--------------------------------------------------------------------------
  297.   def visible
  298.     return @visible
  299.   end
  300.   def visible=(value)
  301.     @visible = value
  302.     for i in @@sprite.values
  303.       i.visible = @visible
  304.     end
  305.     @@flash_layer.visible = @visible
  306.     return @visible
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ● 更新地圖元件閃爍
  310.   #--------------------------------------------------------------------------
  311.   def flash_data
  312.     return @flash_data
  313.   end
  314.   def flash_data=(data)
  315.     return @flash_data if @flash_data == data
  316.     @flash_data = data
  317.     draw_flash
  318.     return @flash_data
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 更新地圖元件
  322.   #--------------------------------------------------------------------------
  323.   def update
  324.     # 更新動畫等待畫格
  325.     if @@counting >= ANI_T
  326.       @@counting = 0
  327.       @@count += 1
  328.       for i in @@ani_switch.keys
  329.         id = @map_data[i[0], i[1], i[2]]
  330.         @@sprite[i].bitmap = @@cache[id][@@count % @@cache[id].length]
  331.       end
  332.     else
  333.       @@counting += 1
  334.     end
  335.     # 更新閃爍等待畫格
  336.     @@flash_counting += 1
  337.     if @@flash_counting >= FLA_T
  338.       @@flash_counting = 0
  339.       @@flash_count = (@@flash_count + 1) % FLA_O.size
  340.       @@flash_layer.opacity=FLA_O[@@flash_count] if @@flash_layer != nil
  341.     end
  342.     if @ox != @@last_ox
  343.       #人物走路時候
  344.       if @ox % (AREA_W / 2) != 0
  345.         for i in @@sprite.values
  346.           i.ox = @ox - @@last_ox
  347.         end
  348.       else
  349.         refreshox
  350.         @@last_ox = @ox
  351.       end
  352.     end
  353.     if @oy != @@last_oy
  354.       #人物走路時候
  355.       if @oy % AREA_H != 0
  356.         for i in @@sprite.values
  357.           i.oy = @oy - @@last_oy
  358.         end
  359.       else
  360.         refreshoy
  361.         @@last_oy = @oy
  362.       end
  363.     end
  364.     for i in @@sprite.keys
  365.      id = @map_data[i[0],i[1],i[2]]
  366.      if @priorities[id] != 0
  367.        @@sprite[i].z = @priorities[id] == 0 ? 0 : 32 * (1 + @@sprite[i].y / AREA_H + @priorities[id])
  368.        @@sprite[i].update
  369.      end
  370.     end
  371.   end
  372.   #--------------------------------------------------------------------------
  373.   def refreshox
  374.     #需要釋放的元件範圍
  375.     del_range_y = [(@@last_oy / AREA_H - 1), ((@@last_oy + WIN_H) / AREA_H)]
  376.     if @ox > @@last_ox
  377.       del_range_x = [(@@last_ox / AREA_W - 1), (@ox / AREA_W - 2)]
  378.     else
  379.       del_range_x = [((@ox + WIN_W) / AREA_W + 1), ((@@last_ox + WIN_W) / AREA_W)]
  380.     end
  381.     #需要繪製的元件範圍
  382.     draw_range_y = [(@oy / AREA_H - 1), ((@oy + WIN_H) / AREA_H)]
  383.     if @ox > @@last_ox
  384.       draw_range_x = [[((@@last_ox + WIN_W) / AREA_W + 1), (@ox / AREA_W - 1)].max, ((@ox + WIN_W) / AREA_W)]
  385.     else
  386.       draw_range_x = [(@ox / AREA_W - 1), ([(@@last_ox / AREA_W - 1),(@ox + WIN_W) / AREA_W + 1].min - 1)]
  387.     end
  388.     #釋放元件 BEGIN
  389.     for x in del_range_x[0]..del_range_x[1]
  390.       next if draw_range_x[0] > x && x < draw_range_x[1]
  391.       for y in del_range_y[0]..del_range_y[1]
  392.         next if draw_range_y[0] > y && y < draw_range_y[1]
  393.         for l in 0..2
  394.           next if @@sprite[[x, y, l]].nil?
  395.           @@sprite[[x, y, l]].dispose
  396.           @@sprite.delete([x, y, l])
  397.           @@ani_switch.delete([x, y, l])
  398.         end
  399.       end
  400.     end
  401.     #釋放元件 END
  402.     #恢復走路時候的偏移 BEGIN
  403.     if @ox >= (@map_data.xsize * AREA_W - WIN_W)
  404.       for i in @@sprite.keys
  405.         @@sprite[i].ox = 0
  406.         @@sprite[i].x = i[0] * AREA_W - @ox
  407.         if i[0] < (@ox / 32 - 1)
  408.           @@sprite[i].x += @map_data.xsize * AREA_W
  409.         elsif i[0] == -1
  410.           @@sprite[i].x = 0
  411.         end
  412.       end
  413.     else
  414.       for i in @@sprite.keys
  415.         @@sprite[i].ox = 0
  416.         @@sprite[i].x = i[0] * AREA_W - @ox
  417.       end
  418.     end
  419.     #恢復走路時候的偏移 END
  420.     #繪製元件 BEGIN
  421.     for x in draw_range_x[0]..draw_range_x[1]
  422.       for y in draw_range_y[0]..draw_range_y[1]
  423.         for l in 0..2
  424.           draw(x, y, l)
  425.         end
  426.       end
  427.     end
  428.     #繪製元件 END
  429.   end
  430.   #--------------------------------------------------------------------------
  431.   def refreshoy
  432.     #需要釋放的元件範圍
  433.     del_range_x = [(@@last_ox / AREA_W - 1), ((@@last_ox + WIN_W) / AREA_W)]
  434.     if @oy > @@last_oy
  435.       del_range_y = [(@@last_oy / AREA_H - 1), (@oy / AREA_H - 2)]
  436.     else
  437.       del_range_y = [((@oy + WIN_H) / AREA_H + 1), ((@@last_oy + WIN_H) / AREA_H)]
  438.     end
  439.     #需要繪製的元件範圍
  440.     draw_range_x = [(@ox / AREA_W - 1), ((@ox + WIN_W) / AREA_W)]
  441.     if @oy > @@last_oy
  442.       draw_range_y = [[((@@last_oy + WIN_H) / AREA_H + 1), (@oy / AREA_H - 1)].max, ((@oy + WIN_H) / AREA_H)]
  443.     else
  444.       draw_range_y = [(@oy / AREA_H - 1), ([(@@last_oy / AREA_H - 1),(@oy + WIN_H) / AREA_H + 1].min - 1)]
  445.     end
  446.     #釋放元件 BEGIN
  447.     for x in del_range_x[0]..del_range_x[1]
  448.       next if draw_range_x[0] > x && x < draw_range_x[1]
  449.       for y in del_range_y[0]..del_range_y[1]
  450.         next if draw_range_y[0] > y && y < draw_range_y[1]
  451.         for l in 0..2
  452.           next if @@sprite[[x, y, l]].nil?
  453.           @@sprite[[x, y, l]].dispose
  454.           @@sprite.delete([x, y, l])
  455.           @@ani_switch.delete([x, y, l])
  456.         end
  457.       end
  458.     end
  459.     #釋放元件 END
  460.     #恢復走路時候的偏移 BEGIN
  461.     if @oy >= (@map_data.ysize * AREA_H - WIN_H)
  462.       for i in @@sprite.keys
  463.         @@sprite[i].oy = 0
  464.         @@sprite[i].y = i[1] * AREA_H - @oy
  465.         if i[1] < (@oy / 32 - 1)
  466.           @@sprite[i].y += @map_data.ysize * AREA_H
  467.         elsif i[1] == -1
  468.           @@sprite[i].y = 0
  469.         end
  470.       end
  471.     else
  472.       for i in @@sprite.keys
  473.         @@sprite[i].oy = 0
  474.         @@sprite[i].y = i[1] * AREA_H - @oy
  475.       end
  476.     end
  477.     #恢復走路時候的偏移 END
  478.     #繪製元件 BEGIN
  479.     for x in draw_range_x[0]..draw_range_x[1]
  480.       for y in draw_range_y[0]..draw_range_y[1]
  481.         for l in 0..2
  482.           draw(x, y, l)
  483.         end
  484.       end
  485.     end
  486.     #繪製元件 END
  487.   end
  488. end
复制代码
ps:
640*480 fps 在38左右
800*600 fps 在35左右
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-2-13
帖子
36
7
发表于 2009-10-28 13:11:21 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-10-18
帖子
8
6
发表于 2009-10-20 15:39:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

镖师十四

梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-10-17
帖子
128
5
发表于 2009-10-20 00:36:02 | 只看该作者
老实说,这个脚本不是非一般的卡,一出来半边黑,基本上作用是学院派的
欢迎光临法宝网---历史的天空2专版 http://www.fabfan.net/bbs/forum-85-1.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
462 小时
注册时间
2007-7-30
帖子
643
4
 楼主| 发表于 2009-7-13 16:11:22 | 只看该作者
@shadow = Bitmap.new(SIZEX, SIZEY)
@shadow.fill_rect(0, 0, 17, SIZEY, Color.new(0, 0, 0, 120))#陰影
事實上RMXP不需要繪製陰影
@passages是VX的屬性,XP亦無
@backbitmap[id + 10000] 也有問題,
因為XP的地圖元件數不限大小,一旦元件數超過10000就完了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1195
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

3
发表于 2009-7-6 08:48:34 | 只看该作者
畢竟RUBY不能贏VC


Ruby的速率比VB都都还慢,别说C了……

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
10295
在线时间
4443 小时
注册时间
2005-10-22
帖子
6994

开拓者贵宾

2
发表于 2009-7-6 08:43:38 | 只看该作者
呃……在我那个之外又多了什么东西么    囧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-29 09:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表