2014-10-01 16:21:48 u014749760 阅读数 1431
  • Unity3D协程-基础篇

    本课程为Unity3D协程技术精讲中的基础部分,协程是UnityEngine技术里面为常用且设计为精髓的技术;基础部分主要讲解协成的前世今生,其中包括设计模式、实现模式、验证模式的递进式推进过程让同学们掌握协程原理与程序设计。

    2101 人正在学习 去看看 曾家海

Unity 3D 文件导入出错

安装unity 时我选择了free版的,打开已有项目时出现如下错误提示



解决办法:

先把要导入的文件先拷贝到unity3d安装目录下对应的文件夹内,之后再返回unity3d软件,右键选择“导入”。


2013-10-05 16:40:19 kekeqy 阅读数 1514
  • Unity3D协程-基础篇

    本课程为Unity3D协程技术精讲中的基础部分,协程是UnityEngine技术里面为常用且设计为精髓的技术;基础部分主要讲解协成的前世今生,其中包括设计模式、实现模式、验证模式的递进式推进过程让同学们掌握协程原理与程序设计。

    2101 人正在学习 去看看 曾家海
using UnityEngine;
using UnityEditor;
using System.Collections;

public class Export{
	
	[MenuItem("Assets/将资源导出成.unity3d文件")]
	static void ExportToUnity3d(){
		if(Selection.objects.Length>0)
		{
			string path=EditorUtility.SaveFilePanel("导出资源",null,null,"unity3d");
			if(path.Length!=0)BuildPipeline.BuildAssetBundle(Selection.activeObject,Selection.objects,path);
		}
		else{Debug.Log("请选择要导出的资源或者资源文件夹!");}
	}
}

2019-12-10 21:12:10 lbh19630726 阅读数 54
  • Unity3D协程-基础篇

    本课程为Unity3D协程技术精讲中的基础部分,协程是UnityEngine技术里面为常用且设计为精髓的技术;基础部分主要讲解协成的前世今生,其中包括设计模式、实现模式、验证模式的递进式推进过程让同学们掌握协程原理与程序设计。

    2101 人正在学习 去看看 曾家海

①下载安卓的ADT和SDK包。

我们这里下载绑定(bundle)的包.

解压的时候出错,忽略就好。

解压完成后重命名该文件夹。

build-tools里面有两个文件夹要删除。

只留下如下文件和文件夹:

 

platforms文件夹不为空:

 

②在unity3d设置和导出Android项目文件。

 

 

 

 

 

等待进度条完成。

 

 

 

导出的是安卓项目了,接下来在eclipse导出即可。

 

 

 

 

 

 

 

2013-01-21 14:53:57 jeksonal 阅读数 16773
  • Unity3D协程-基础篇

    本课程为Unity3D协程技术精讲中的基础部分,协程是UnityEngine技术里面为常用且设计为精髓的技术;基础部分主要讲解协成的前世今生,其中包括设计模式、实现模式、验证模式的递进式推进过程让同学们掌握协程原理与程序设计。

    2101 人正在学习 去看看 曾家海

unity3D 用3DMax 做的模型时需要注意几点

1:方向问题
2:模型尺寸问题

3:模型所占资源大小问题

 

3DMax 做的东西导入到 Unity3D 中,在 Unity3D 引擎中 X 会被反向旋转 90 度();个人处理方式是建模时先将模型 X 轴旋转 90;再调节模型;

3DMax 做的东西导入到 Unity3D 中,由于 3DMax 默认的单位处理机制与 Unity3D 不一样,而导致显示过小的问题;所以,在制作模型前先调节好 3DMax 中的系统单位设置

具体操作:

 菜单栏: 选择 “自定义”  ,

再选择 “单位设置”-- >

 接着点选 “系统单位设置 ”  --->   将系统单位比例设置成:  ;再点击 “ 确定” 保存!

在模型的制作过程当中,为了使物体的坐标在物体的中心点,要记得冻结物体的坐标属性

当模型制作完成时,导出为 FBX 格式时还需注意:

在导出的 设置面板中 :

点击高级选项,然后出现:

确保 “ 场景单位转化为:”的设置为 "Meters"


模型导出后,模型资源可能很大,原因有以下几个:

1: 检测一下材质贴图的格式是否为:.png 的,不是请改过来 ;

2:看模型当中是否有过多的独立存在的物体,将不需要单独 存在给它合并在一块!


要是模型导入到Unity3D 中后,引擎运行变卡,就得看看模型的面是不是太多了!


2015-02-11 09:50:00 book_longssl 阅读数 862
  • Unity3D协程-基础篇

    本课程为Unity3D协程技术精讲中的基础部分,协程是UnityEngine技术里面为常用且设计为精髓的技术;基础部分主要讲解协成的前世今生,其中包括设计模式、实现模式、验证模式的递进式推进过程让同学们掌握协程原理与程序设计。

    2101 人正在学习 去看看 曾家海

Scut提供 Sdk包,方便开发人员快速与Scut游戏服务器对接; 先看示例如下:

启动项目 

打开Scutc.svnSDKUnity3dAssets目录下的TestScene.unity项目文件,选中Main Camera,将TestGUI.cs文件拖动到Inspector窗口的Script,如图: 
 

 


 


点击运行,如下: 
 
  

目录层次说明 
1)       Net层:封装Http与Socket请求操作,以及网络协议的数据解析和请求参数的打包,其中NetWriter里有SetMd5Key为设置网络协议请求参数的Key,用于跟服务校验请求参数的有效性 
2)       Reflect层:提供高性能的反射功能 
3)       Security层:加密操作 
4)       Serialization层:封装对象的序列化操作 
5)       Game层:游戏业务逻辑层代码实现功能,此目录下的Action和Behaviour目录,根据业务自己实现代码 
6)       CustomHeadFormater类:自定的结构消息头解析器 
7)       TestGUI.cs为测试脚本
  

TestGUI代码


using UnityEngine;

public class TestGUI : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
        //todo 启用自定的结构
        Net.Instance.HeadFormater = new CustomHeadFormater();
    }

    // Update is called once per frame
    void Update()
    {

    }

    void OnGUI()
    {

        // Now create any Controls you like, and they will be displayed with the custom Skin
        if (GUILayout.Button("Click Http"))
        {
            NetWriter.SetUrl("[color=blue !important]http://ph.scutgame.com/service.aspx");
            Net.Instance.Send((int)ActionType.RankSelect, null);
        }

        // Any Controls created here will use the default Skin and not the custom Skin
        if (GUILayout.Button("Click Socket"))
        {
            NetWriter.SetUrl("ph.scutgame.com:9001");
            Net.Instance.Send((int)ActionType.RankSelect, null);
        }
    }
}



Send方法接口会根据url是否带http字段来判断是否是用http还是socket, 
Action和Behaviour目录下实现自己的业务代码

自定头部解析类CustomHeadFormater代码


using System;
using GameRanking.Pack;
using ZyGames.Framework.Common.Serialization;

/// <summary>
/// 定制的头部结构解析
/// </summary>
public class CustomHeadFormater : IHeadFormater
{
    public bool TryParse(byte[] data, out PackageHead head, out byte[] bodyBytes)
    {
        bodyBytes = null;
        head = null;
        int pos = 0;
        if (data == null || data.Length == 0)
        {
            return false;
        }
        int headSize = GetInt(data, ref pos);
        byte[] headBytes = new byte[headSize];
        Buffer.BlockCopy(data, pos, headBytes, 0, headBytes.Length);
        pos += headSize;
        ResponsePack resPack = ProtoBufUtils.Deserialize<ResponsePack>(headBytes);

        head = new PackageHead();
        head.StatusCode = resPack.ErrorCode;
        head.MsgId = resPack.MsgId;
        head.Description = resPack.ErrorInfo;
        head.ActionId = resPack.ActionId;
        head.StrTime = resPack.St;

        int bodyLen = data.Length - pos;
        if (bodyLen > 0)
        {
            bodyBytes = new byte[bodyLen];
            Buffer.BlockCopy(data, pos, bodyBytes, 0, bodyLen);
        }
        else
        {
            bodyBytes = new byte[0];
        }

        //UnityEngine.Debug.Log(string.Format("ActionId:{0}, ErrorCode:{1}, len:{2}", resPack.ActionId, resPack.ErrorCode, bodyBytes.Length));

        return true;
    }

    private int GetInt(byte[] data, ref int pos)
    {
        int val = BitConverter.ToInt32(data, pos);
        pos += sizeof(int);
        return val;
    }
}




BaseAction代码


/// <summary>
/// 自定结构Action代理基类
/// </summary>
public abstract class BaseAction : GameAction
{
    protected BaseAction(int actionId)
        : base(actionId)
    {
    }

    protected override void SetActionHead(NetWriter writer)
    {
        MessagePack headPack = new MessagePack()
        {
            MsgId = Head.MsgId,
            ActionId = ActionId,
            SessionId = Head.SessionId,
            UserId = Head.UserId
        };
        byte[] data = ProtoBufUtils.Serialize(headPack);
        writer.SetHeadBuffer(data);
        writer.SetBodyData(null);
    }
}


Action1001代码


using System;
using System.Collections.Generic;
using GameRanking.Pack;
using ZyGames.Framework.Common.Serialization;

public class Action1001 : BaseAction
{
    private Response1001Pack _responseData;

    public Action1001()
        : base((int)ActionType.RankSelect)
    {
    }

    protected override void SendParameter(NetWriter writer, object userData)
    {
    //自定对象参数格式
    Request1001Pack requestPack = new Request1001Pack()
    {
        PageIndex = 1,
        PageSize = 10
    };
    byte[] data = ProtoBufUtils.Serialize(requestPack);
    writer.SetBodyData(data);
    }

    protected override void DecodePackage(NetReader reader)
    {
        if (reader.StatusCode == 0)
        {
        //自定对象格式解包
        _responseData = ProtoBufUtils.Deserialize<Response1001Pack>(reader.Buffer);
             
        }
    }

    protected override void Process(object userData)
    {
        if (_responseData != null)
        {
            UnityEngine.Debug.Log(string.Format("ok, count:{0}", _responseData.PageCount));
        }
    }
}





unity3d发布Android程序

阅读数 18574

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