corpus corpus
关注数: 27 粉丝数: 57 发帖数: 986 关注贴吧数: 15
新人报到贴,我也来发个自己正在做的小游戏前瞻 前两天才发现这个吧,一下子兴奋起来。翻看了之前大神们的帖子,好多nb的游戏。相比之下我做的这个原创度就太低了,玩法也没啥新鲜的创意,实在不好意思称为独立游戏,顶多就是个魔兽题材的fangame吧。 游戏是unity做的,之前在unity3d吧也发过,感觉现在大多数人似乎对传统战棋类的游戏兴趣不大,有些让人灰心。不过我还是会努力坚持把它做出来,至少是完成个完整的游戏流程原型吧。 游戏目前目标手机平台,是个类似火焰纹章那样的传统走格子SLG。基本规则是简化过的3版龙与地下城规则。游戏分为大地图和战斗小地图两部分。大地图类似骑马与砍杀,带有点经营冒险者公会的意思,小地图主要就是战斗,带着招募到的小队成员四处接委托任务,挣钱挣声望。 游戏背景就设在WOW里面的南方人类王国附近区域。时间大概是魔兽争霸3开始那段时间,即北方瘟疫刚开始在洛丹伦王国扩散,南方这里基本上还算平静(但是已经开始有一些异样出现,这个打算在之后设计剧情的时候再详细考虑)。里面有几个派系,玩家的队伍或者公会要在及各派系之间平衡,比如如果做多了暴风王国的剿匪任务,那么和山贼,豺狼人等野怪的关系就会下降,在大地图上旅行时就很有可能遭到敌对派系队伍的追杀。相反如果玩家总是骚扰城镇农村的居民或者来往商队,那么和王国的关系就会下降... 初步要实现的玩法大致如此。现在战斗逻辑已经完成,正奋斗在大地图上。 下面是目前的一些游戏截图。 大地图:战斗小地图
又碰到问题了,这次是unity的UI里面按钮的Start没被调用。 代码大体是这样的: using UnityEngine; using UnityEngine.UI; using System.Collections; public class ButtonWeapSet : MonoBehaviour { private WEAPON_SET_TYPE m_eWeaponSet;//本按钮对应的. private Image m_IconMain; private Image m_IconOff; private Image m_HighLight; private float m_fHighLightBlinkDuration = 2.0f; private float m_fHighLightTimer = 0; public void SetWeaponSet( WEAPON_SET_TYPE eWeaponSet ) { m_eWeaponSet = eWeaponSet; } public void SetIconSprite( Sprite spriteMain, Sprite spriteOff=null ) { if( spriteMain != null && m_IconMain != null ) m_IconMain.overrideSprite = spriteMain; if( spriteOff != null && m_IconOff != null ) m_IconOff.overrideSprite = spriteOff; } public void SetButtonEnable( bool bEnabled=true ) { gameObject.SetActive( bEnabled ); } public void SetHighLight( bool bEnabled=true ) { if( m_HighLight != null ) m_HighLight.enabled = bEnabled; } void Start() { Button compBtn = gameObject.GetComponent<Button>(); compBtn.onClick.AddListener( OnButtonClick ); Image[] aImages = gameObject.GetComponentsInChildren<Image>(); if( aImages != null && aImages.Length > 0 ) { for( int i = 0; i < aImages.Length; i++ ) { if( aImages[i].name.CompareTo( "main" ) == 0 ) m_IconMain = aImages[i]; else if( aImages[i].name.CompareTo( "off" ) == 0 ) m_IconOff = aImages[i]; else if( aImages[i].name.CompareTo( "highlit" ) == 0 ) m_HighLight = aImages[i]; } } Debug.Log( "OnStart" ); } private void OnButtonClick() { Debug.Log( "OnButtonClick" ); m_HighLight.enabled = true; CharacterInterface character = CombatLogic.s_Singleton.GetCurrentActiveCharacter(); if( character != null ) character.SetActiveWeaponSet( m_eWeaponSet ); } } 运行时没有抱任何警告或者错误,可是上面那个void Start()函数就是没有被调用。 而如果我把那个函数名改成void Awake()就会被调用了。这个很是奇怪,因为相同的工程里面之前已经做过很多类似的UI按钮了,没有出过这样的问题。求教大神们这个是什么情况啊?
[T3]昨天晚上试验了一下调整设置文件的结果 不知道吧里之前有没有人试过。如果有就算再重复一次把,呵呵。之前换了新机器后一直没装过T3。上周从讯雷上下了一个中文版的装上了,发现运行特慢,感觉比原来老机器的(内存512MB)还慢。起初怀疑是中文版造成的。到system\目录里一看发现有两个超大的中文字符贴图,得有好几十MB。于是从t3ed里面找了一个t3main_shippingversion.exe的文件替换了原来的t3main.exe,结果再进游戏感觉顺畅多了。本以为这就可以了,谁知玩了两个任务都不到(中间穿插着在南区和stontmarket之间跑了跑)又开始卡起来。这次感觉问题严重了,甚至还以为是自己机器有问题了。但是退出重进游戏还是一样,一开始还好,跑几个场景就开始卡。最后无奈翻看default.ini,发现有一段叫"引擎.内存管理"什么的设置(具体英文名我记不起来了,大体上就是[Engine MemManager]什么的)但是要注意有两个上下相邻的段名字很类似,其中上面的那个是中间有XB两个字符的,下面的没有。我说的就是下面的那个。那里面有好几项,像是Texture=XXXXXX BSPTree=XXXXXX AINav=XXXXXX StaticMesh=XXXXX ....(XXXX代表内存大小,以字节为单位。具体项目名和顺序我记不清了)我当时用的机器是2G内存,而这些项里面写的大小远没有达到机器能够承受的内存限制。所以我把这些值都增大了不少。比如供贴图使用的Texture那项我改成了80MB(1024*1024*80=83886080),二向空间分割树BSPTree那项我改成了25MB。还有其它很多项都增大之后运行起来能占用约2,3百MB的内存之后,再进游戏连玩几个任务都没有卡过了,而且很多原来挺卡的场景也顺畅许多。当然,内存占用量上限也变大了(虽然我是在全屏模式进的游戏,没法切出到进程管理器看具体内存大小,但是估计因该会变大)。原理估计就是原来自带的default.ini里面的内存使用上限都是针对DX8.1时代的老机器配置的,那时候主流pc的内存都不超过512。当内存使用到达这里指定的上限后,即使你机器内存还有空闲,他也不去使用,而是把原来内存中旧资源剔出并换成新的。这样的话一旦使用到达上限,内存和硬盘就会经常交换数据,游戏就变得很卡。不过时代在变,配置也要与时俱进嘛。内存大了空着不使其不浪费。大家如果再玩t3的时候也发现过即是自己机器配置很高,还是觉得卡的情况,不妨试试调整一下这些配置。当然还是要根据自己机器内存大小酌情处理。千万不要设得太高,把系统资源占没了,那样也会变慢的。还有就是内存大小尽量使用2的n次方或者2的n次方的倍数,这样更方便引擎使用,特别是texture那项。就先说这么多吧,具体的我回头再试试。
1 下一页