2018-03-22 19:47:48 qq_40771473 阅读数 941
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞
关卡滑动最主要的是ScrollRect组件里的属性horizontalNormalizedPosition(页面水平滑动的值)和vertiacalNormalizedPosition(页面垂直滑动的值);这里我的项目是水平滑动。
 

horizontalNormalizedPosition的最小值是0,最大值是1;也就是说你的第一页是0,最后一页是1;这里需要注意的是如果你有四页,第二页不是0.25,需要你自己测试(就是程序在第二页的时候,去打印一下horizontalNormalizedposition就可以了)。

现在就开始我的项目:如果看项目文件,加我qq:23353677;

public class ScrollPage : MonoBehaviour,IBeginDragHandler,IEndDragHandler {
 
//滑动组件
public ScrollRect scrollRect;
 
//每一页滚动区域的定位坐标
public float[] posArr = new float[] { 0, 0.3333f, 0.666f, 1 };
 
//页码索引
public int pageIndex = 0;
 
//目标位置
public float targetPos;
 
//是否拖拽
public bool isDrag;
 
//单选按钮组
List<Toggle> toggles;
 
void Start () {
scrollRect = GetComponent<ScrollRect>();
toggles = new List<Toggle>();
this.GetComponentsInChildren<Toggle>(toggles);
//给每个单选按钮添加时间
foreach (var item in toggles) {
item.onValueChanged.AddListener(delegate(bool flag) {
//因为点击单选按钮时 会有两个按钮触发事件,所以要判断
if (flag) {
//把名字中的字母替换掉,只留数字,然后转化成int类型作为下标;
int index = int.Parse(item.name.Replace("p",""));
//更新目标位置
targetPos = posArr[index];
pageIndex = index;
}
});
}
}
 
void Update () {
if (!isDrag)
{
scrollRect.horizontalNormalizedPosition = Mathf.Lerp(scrollRect.horizontalNormalizedPosition,targetPos,Time.deltaTime*5);
}
}
 
public void OnBeginDrag(PointerEventData eventData)
{
isDrag = true;
}
 
public void OnEndDrag(PointerEventData eventData)
{
isDrag = false;
/*第一种方法
 
float curPos = scrollRect.horizontalNormalizedPosition;
//鼠标(滑条的水平值scrollRect.horizontalNormalizedPosition)和每个页码的距离最小,就去哪一页
//offset最小距离,先假设第一页和鼠标的距离差;
pageIndex = 0;
float offset = Mathf.Abs(curPos - posArr[pageIndex]);
for (int i = 1; i < posArr.Length; i++) {
float temp = Mathf.Abs(curPos - posArr[i]);
if(temp < offset)
{
offset = temp;
pageIndex = i;
}
}
//更新目标位置
targetPos = posArr[pageIndex];
//单选按钮为真
toggles[pageIndex].isOn = true;
 
*/
 
 
//第二种方法
 
float curPos = scrollRect.horizontalNormalizedPosition;
//根据当前和原始的位置差,是正是负,判断向左向右
//如果当前和原始的位置差小于一个值,就不改变当前的页码了
if (Mathf.Abs(curPos - targetPos) < 0.07f) { return; }
//正值右滑
if (curPos - targetPos > 0)
{
pageIndex = pageIndex + 1 > posArr.Length - 1 ? posArr.Length - 1 : pageIndex+1;
Debug.Log(pageIndex);
}
else {
pageIndex = pageIndex - 1 < 0 ? 0 : pageIndex-1;
}
 
targetPos = posArr[pageIndex];
toggles[pageIndex].isOn = true;
 
}
}
2019-04-10 10:44:27 qq_44884706 阅读数 326
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞

首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

               

1. 简介

    在PC上开发时,其天空盒的效果很好,但是为Android平台Build之后,其效果简直没法看。

    更为恼火的是,之后PC上的纹理效果也变差了,新加入的纹理效果都会变差,看其纹理格式,使用ETC进行了压缩。

2. Unity3D默认纹理格式问题

2.1 在导入时是否自动压缩

     Edit->Preferences...

 

当选择此选项之后,每当导入新的纹理(无论是拖入或在文件管理器中copy),Unity3D都会根据当前平台的设置进行自动转换,此纹理转换,并不是把纹理文件进行修改,纹理文件是不动的,而是增加了一个.meta文件(如Sunny4_back.tif对应Sunny4_back.tif.meta),其中定义了很多与纹理相关的参数,其中决定此纹理格式的参数为:textureType,此文件内容如下:

fileFormatVersion: 2guid: e658bdd655d56c64eb2bf011d186cdedTextureImporter:  serializedVersion: 2  mipmaps:    mipMapMode: 0    enableMipMap: 1    linearTexture: 0    correctGamma: 0    fadeOut: 0    borderMipMap: 0    mipMapFadeDistanceStart: 1    mipMapFadeDistanceEnd: 3  bumpmap:    convertToNormalMap: 0    externalNormalMap: 0    heightScale: .25    normalMapFilter: 0  isReadable: 0  grayScaleToAlpha: 0  generateCubemap: 0  seamlessCubemap: 0  textureFormat: 4  maxTextureSize: 1024  textureSettings:    filterMode: -1    aniso: -1    mipBias: -1    wrapMode: -1  nPOTScale: 1  lightmap: 0  compressionQuality: 50  spriteMode: 0  spriteExtrude: 1  spriteMeshType: 1  alignment: 0  spritePivot: {x: .5, y: .5}  spriteBorder: {x: 0, y: 0, z: 0, w: 0}  spritePixelsToUnits: 100  alphaIsTransparency: 0  textureType: -1  buildTargetSettings: []  spriteSheet:    sprites: []  spritePackingTag:   userData: 

2.2 Unity3D设置纹理格式

    1) 选中纹理,纹理的Inspector窗口如下图所示:



上图显示的为Default设置,若Android平台没有单独设置, 则此纹理在Anroid平台采用默认设置,若Android平台单独设置了,则采用Android平台设置的格式。Unity3D只能设置三种纹理格式:Compressed、16bits、Truecolor,若要设置其它纹理格式,则Unity3D无能为力。

2.3 在Unity3D中自定义设置纹理格式

       把ChangeTextureImportSettings.cs放于Assets/Editor目录下,ChangeTextureImportSettings.cs内容如下:

using UnityEngine;using UnityEditor;// ///////////////////////////////////////////////////////////////////////////////////////////////////////////// Batch Texture import settings modifier.//// Modifies all selected textures in the project window and applies the requested modification on the// textures. Idea was to have the same choices for multiple files as you would have if you open the// import settings of a single texture. Put this into Assets/Editor and once compiled by Unity you find// the new functionality in Custom -> Texture. Enjoy! :-)//// Based on the great work of benblo in this thread:// http://forum.unity3d.com/viewtopic.php?t=16079&start=0&postdays=0&postorder=asc&highlight=textureimporter//// Developed by Martin Schultz, Decane in August 2009// e-mail: ms@decane.net//// Updated for Unity 3.0 by col000r in August 2010// http://col000r.blogspot.com//// /////////////////////////////////////////////////////////////////////////////////////////////////////////public class ChangeTextureImportSettingsUnity3 : ScriptableObject {    [MenuItem ("Custom/Texture/Change Texture Format/Auto Compressed")]  static void ChangeTextureFormat_AutoCompressed() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.AutomaticCompressed);   }    [MenuItem ("Custom/Texture/Change Texture Format/Auto 16bit")]  static void ChangeTextureFormat_Auto16Bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.Automatic16bit);   }    [MenuItem ("Custom/Texture/Change Texture Format/Auto Truecolor")]  static void ChangeTextureFormat_AutoTruecolor() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.AutomaticTruecolor);   }    [MenuItem ("Custom/Texture/Change Texture Format/RGB Compressed DXT1")]  static void ChangeTextureFormat_RGB_DXT1() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.DXT1);   }    [MenuItem ("Custom/Texture/Change Texture Format/RGB Compressed DXT5")]  static void ChangeTextureFormat_RGB_DXT5() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.DXT5);   }    [MenuItem ("Custom/Texture/Change Texture Format/RGB 16 bit")]  static void ChangeTextureFormat_RGB_16bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.RGB16);   }    [MenuItem ("Custom/Texture/Change Texture Format/RGB 24 bit")]  static void ChangeTextureFormat_RGB_24bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.RGB24);   }    [MenuItem ("Custom/Texture/Change Texture Format/Alpha 8 bit")]  static void ChangeTextureFormat_Alpha_8bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.Alpha8);   }    [MenuItem ("Custom/Texture/Change Texture Format/ARGB 16 bit")]  static void ChangeTextureFormat_RGBA_16bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.ARGB16);   }    [MenuItem ("Custom/Texture/Change Texture Format/RGBA 32 bit")]  static void ChangeTextureFormat_RGBA_32bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.RGBA32);   }    [MenuItem ("Custom/Texture/Change Texture Format/ARGB 32 bit")]  static void ChangeTextureFormat_ARGB_32bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.ARGB32);   }    [MenuItem ("Custom/Texture/Change Texture Format/RGB PVRTC 2bit")]  static void ChangeTextureFormat_RGB_PVRTC_2bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.PVRTC_RGB2);   }    [MenuItem ("Custom/Texture/Change Texture Format/RGBA PVRTC 2bit")]  static void ChangeTextureFormat_RGBA_PVRTC_2bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.PVRTC_RGBA2);   }        [MenuItem ("Custom/Texture/Change Texture Format/RGB PVRTC 4bit")]  static void ChangeTextureFormat_RGB_PVRTC_4bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.PVRTC_RGB4);   }    [MenuItem ("Custom/Texture/Change Texture Format/RGBA PVRTC 4bit")]  static void ChangeTextureFormat_RGBA_PVRTC_4bit() {    SelectedChangeTextureFormatSettings(TextureImporterFormat.PVRTC_RGBA4);   }    // ----------------------------------------------------------------------------    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/32")]  static void ChangeTextureSize_32() {    SelectedChangeMaxTextureSize(32);   }    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/64")]  static void ChangeTextureSize_64() {    SelectedChangeMaxTextureSize(64);   }    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/128")]  static void ChangeTextureSize_128() {    SelectedChangeMaxTextureSize(128);   }    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/256")]  static void ChangeTextureSize_256() {    SelectedChangeMaxTextureSize(256);   }    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/512")]  static void ChangeTextureSize_512() {    SelectedChangeMaxTextureSize(512);   }    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/1024")]  static void ChangeTextureSize_1024() {    SelectedChangeMaxTextureSize(1024);   }    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/2048")]  static void ChangeTextureSize_2048() {    SelectedChangeMaxTextureSize(2048);   }    // ----------------------------------------------------------------------------    [MenuItem ("Custom/Texture/Change MipMap/Enable MipMap")]  static void ChangeMipMap_On() {    SelectedChangeMimMap(true);   }    [MenuItem ("Custom/Texture/Change MipMap/Disable MipMap")]  static void ChangeMipMap_Off() {    SelectedChangeMimMap(false);   }    // ----------------------------------------------------------------------------      [MenuItem ("Custom/Texture/Change Non Power of 2/None")]  static void ChangeNPOT_None() {    SelectedChangeNonPowerOf2(TextureImporterNPOTScale.None);   }    [MenuItem ("Custom/Texture/Change Non Power of 2/ToNearest")]  static void ChangeNPOT_ToNearest() {    SelectedChangeNonPowerOf2(TextureImporterNPOTScale.ToNearest);   }    [MenuItem ("Custom/Texture/Change Non Power of 2/ToLarger")]  static void ChangeNPOT_ToLarger() {    SelectedChangeNonPowerOf2(TextureImporterNPOTScale.ToLarger);   }    [MenuItem ("Custom/Texture/Change Non Power of 2/ToSmaller")]  static void ChangeNPOT_ToSmaller() {    SelectedChangeNonPowerOf2(TextureImporterNPOTScale.ToSmaller);   }        // ----------------------------------------------------------------------------    [MenuItem ("Custom/Texture/Change Is Readable/Enable")]  static void ChangeIsReadable_Yes() {    SelectedChangeIsReadable(true);   }    [MenuItem ("Custom/Texture/Change Is Readable/Disable")]  static void ChangeIsReadable_No() {    SelectedChangeIsReadable(false);   }    //Unity3D教程手册:www.unitymanual.com    // ----------------------------------------------------------------------------    static void SelectedChangeIsReadable(bool enabled) {        Object[] textures = GetSelectedTextures();    Selection.objects = new Object[0];    foreach (Texture2D texture in textures)  {      string path = AssetDatabase.GetAssetPath(texture);      TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;      textureImporter.isReadable = enabled;          AssetDatabase.ImportAsset(path);     }   }      static void SelectedChangeNonPowerOf2(TextureImporterNPOTScale npot) {        Object[] textures = GetSelectedTextures();    Selection.objects = new Object[0];    foreach (Texture2D texture in textures)  {      string path = AssetDatabase.GetAssetPath(texture);      TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;      textureImporter.npotScale = npot;          AssetDatabase.ImportAsset(path);     }   }    static void SelectedChangeMimMap(bool enabled) {        Object[] textures = GetSelectedTextures();    Selection.objects = new Object[0];    foreach (Texture2D texture in textures)  {      string path = AssetDatabase.GetAssetPath(texture);      TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;      textureImporter.mipmapEnabled = enabled;          AssetDatabase.ImportAsset(path);     }   }  //Unity3D教程手册:www.unitymanual.com  static void SelectedChangeMaxTextureSize(int size) {        Object[] textures = GetSelectedTextures();    Selection.objects = new Object[0];    foreach (Texture2D texture in textures)  {      string path = AssetDatabase.GetAssetPath(texture);      TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;      textureImporter.maxTextureSize = size;        AssetDatabase.ImportAsset(path);     }   }    static void SelectedChangeTextureFormatSettings(TextureImporterFormat newFormat) {        Object[] textures = GetSelectedTextures();    Selection.objects = new Object[0];    foreach (Texture2D texture in textures)  {      string path = AssetDatabase.GetAssetPath(texture);      //Debug.Log("path: " + path);      TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;      textureImporter.textureFormat = newFormat;        AssetDatabase.ImportAsset(path);     }   }    static Object[] GetSelectedTextures()   {    return Selection.GetFiltered(typeof(Texture2D), SelectionMode.DeepAssets);   } }

     以上代码参考:Unity3d:批量修改贴图导入设置工具脚本

然后,Unity3D界面如下:


在Project窗口中选中需要设置的纹理(可多选),然后点菜单命令执行对应的转换即可。



           

浏览人工智能教程

2019-07-08 14:22:20 weixin_41932353 阅读数 33
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞

Unity3D中滑动文章效果实现

准备工作

新建场景Scene 、创建UI(image【text】、Scrollbar)

在这里插入图片描述

添加组件

1、Text中添加文字(大段文字)
2、Image中添加组件(Scroll Rect 、Mask)注意把Hierarchy中的Text和Scrollbar添加到Image Content和Vertical Scrollbar属性。
3、注意调整text的大小使文字全部显示出来

效果

在这里插入图片描述
勾选Mask后(大段文字)
在这里插入图片描述

2018-03-09 23:29:28 qq_25678319 阅读数 3357
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞

1.创建多个button(关卡数)->创建Button数组存button(代码)+目前达到第几关卡(默认为1)levelReached->达到那一关,那一关的Button才可用levelReached=button可用

public class LevelSelect : MonoBehaviour {
    public Button[] levelButton;//关卡数组
    
	// Use this for initialization
	void Start () {
         int levelReached = PlayerPrefs.GetInt("levelReach",1);//获取值,不存在返回1(初始第一关)
        for (int i = 0; i < levelButton.Length; i++)
        {
            if (i > levelReached-1)//达到那一关,那一关的Button才可用
            {
                levelButton[i].interactable = false; //Interactable(是否可用)
            }
        }
	}

2.UI(另起一个场景存)

添加UI->Scroll View->

 ->content加两个组件->Content Size Fitter会根据多少内容来调整Scroll的大小,Grid根据什么方式排布

 

->在content里面加Button,作为关卡选项

http://blog.csdn.net/gcs6564157/article/details/54884809

注:Scroll View的大小在此处调(调一下上下左右的边距)


Button的脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class LvButtonInfo : MonoBehaviour {
    public Image[] stars;
    public string lvName;
	void Start () {
        PlayerPrefs.SetInt(lvName,0);
        int lvStarNumber = PlayerPrefs.GetInt(lvName);

        for (int i = 0; i < stars.Length; i++)
        {
            stars[i].enabled = false;
        }

        for(int i=0;i<lvStarNumber;i++)
        {
            stars[i].enabled = true;
        }
	}
    public void EnterLv()
    {
        SceneManager.LoadScene(lvName);
    }
} 

lvName在Inspect面板写即可。

2019-09-22 14:05:19 fengliaoai 阅读数 12398
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞

每周更新unity3d视频教程,从入门到就业,官方unity3d培训,上千门实时更新课程,供学员在线观看学习,unity3d游戏开发,可以让学员随时随地学习!
免费网上学习unity3d自学教程,国内名师机构专业授课,O基础快速学习,1小时快速入门,7天unity3d自学教程学习,能力快速提升,优质作品随手呈现!

unity3d菜鸟自学教程介绍

unity3d难学吗?

unity3d自学教程目录

unity3d视频教程百度网盘下载

unity3d难学吗?
学习unity3d特效,多来学习路线网看教程,一线游戏特效老师,游戏特效就业安排!学习unity3d特效入门+进阶+精通选择专业才能学得专业!

unity3d自学教程目录
课程介绍:
Unity3d史诗 MMO ARPG 课程《泰斗破坏神》,精心设计将包含200+课时,由视频课时+直播课时+测试课时混合组成。最重头unity3d ARGP课程,完整的 ARPG 网络游戏开发教学。包含多人合作,在线多人游戏开发,角色创建系统,作战系统,RPG系统,技能系统,任务系统,商店系统。

课程大纲:

单机版功能实现

项目概要
登录系统
角色创建、选择、自定义系统
场景加载与游戏存储记录
角色控制
聊天通讯
游戏AI
战斗系统
游戏角色与玩家信息系统
商店系统
道具系统
装备系统
装备与道具掉落
仓库与背包系统
副本系统
任务系统
地图与寻路系统

网络版功能实现

服务端搭建
登录系统
角色选择
游戏场景
聊天功能
角色具体信息
商店系统
道具系统
装备系统
仓库和背包
副本系统
任务系统

unity3d视频教程百度网盘下载
http://www.xuexiluxian.net/unity3d-cainiao-zixue.html

没有更多推荐了,返回首页