unity3d 位置 微信登录_unity3d 微信登录 - CSDN
  • 课程讲解了Unity如何接入微信登录 微信分享 微信支付 支付宝支付
  • 本文并不是教大家如何做微信登录微信分享,那是需要接SDK的。 今天的东西很鸡肋,但有时候还挺需要的。 需求很简单,就是怎么能做到在Unity里写一个按钮,点击一下就打开微信。 其实实现起来也很简单Orz public ...

    关注公众号,获取更多干货。

    二维码

    下面是正文:


    好久没有写博客了,今天发现个好玩的东西,就动动手写几个字,哈哈。

    本文并不是教大家如何做微信登录和微信分享,那是需要接SDK的。

    今天的东西很鸡肋,但有时候还挺需要的。

    需求很简单,就是怎么能做到在Unity里写一个按钮,点击一下就打开微信。

    其实实现起来也很简单Orz

    public void OnButtonClick()
    {
    	Application.OpenURL("weixin://");
    }
    

    emmmmm,大家可以去试试啦哈哈

    本文永久链接:https://blog.csdn.net/Aries_H/article/details/90035020
    转载请注明出处。谢谢。

    展开全文
  • 做了个微信小商城后,想做个微信小游戏,肯定不会看cocos2dx-h5, 所以在网上找了一下,结果悲剧了,不但不怎么好用,甚至很多游戏源码,都放在MiniProgram里面去了 无奈只能自己从头写,网上的游戏源码完全跑不...

    做了个微信小商城后,想做个微信小游戏,肯定不会看cocos2dx-h5,

    所以在网上找了一下,结果悲剧了,不但不怎么好用,甚至很多游戏源码,都放在MiniProgram里面去了

    无奈只能自己从头写,网上的游戏源码完全跑不起来

    不赖的是微信的例子还不错

    所以想做的方案就是在默认例子上面再搭一个MVC和网络通讯

    这肯定是先需要一个EventManager把

    结果一百度,又烦了,TMD都是说的EVENT LOOP,百度了几分钟,看了几篇这样水文

    实在看不下去了,不懂我说什么的,请看我之前的文章

    " 你作为程序员是搞技术的还是搞理论的?通篇那样的只有理论知识的水文,对于资深程序员不能入门JS,对于入门程序员不能提高JS编程能力 ”

    技术是需要苦练得出的。。。而不是看回来的。。。当然。。。天才例外

    神烦之后,找了一个技术博客(不是这个论坛的博客),应该好用:

    var EventUtil={
        
       addHandler:function(element,type,handler){ //添加事件
          if(element.addEventListener){ 
             element.addEventListener(type,handler,false);  //使用DOM2级方法添加事件
          }else if(element.attachEvent){                    //使用IE方法添加事件
             element.attachEvent("on"+type,handler);
          }else{
             element["on"+type]=handler;          //使用DOM0级方法添加事件
          }
       },  
    
       removeHandler:function(element,type,handler){  //取消事件
          if(element.removeEventListener){
             element.removeEventListener(type,handler,false);
          }else if(element.detachEvent){
             element.detachEvent("on"+type,handler);
          }else{
             element["on"+type]=null;
          }
       },
    
       getEvent:function(event){  //使用这个方法跨浏览器取得event对象
          return event?event:window.event;
       },
        
       getTarget:function(event){  //返回事件的实际目标
          return event.target||event.srcElement;
       },
        
       preventDefault:function(event){   //阻止事件的默认行为
          if(event.preventDefault){
             event.preventDefault(); 
          }else{
             event.returnValue=false;
          }
       },
    
       stopPropagation:function(event){  //立即停止事件在DOM中的传播
                                         //避免触发注册在document.body上面的事件处理程序
          if(event.stopPropagation){
             event.stopPropagation();
          }else{
             event.cancelBubble=true;
          }
       },
            
       getRelatedTarget:function(event){  //获取mouseover和mouseout相关元素
          if(event.relatedTarget){
             return event.relatedTarget;
          }else if(event.toElement){      //兼容IE8-
             return event.toElement;
          }else if(event.formElement){
             return event.formElement;
          }else{
             return null;
          }
       },
            
       getButton:function(event){    //获取mousedown或mouseup按下或释放的按钮是鼠标中的哪一个
          if(document.implementation.hasFeature("MouseEvents","2.0")){
             return event.button;
          }else{
             switch(event.button){   //将IE模型下的button属性映射为DOM模型下的button属性
                case 0:
                case 1:
                case 3:
                case 5:
                case 7:
                   return 0;  //按下的是鼠标主按钮(一般是左键)
                case 2:
                case 6:
                   return 2;  //按下的是中间的鼠标按钮
                case 4:
                   return 1;  //鼠标次按钮(一般是右键)
             }
          }
       },
            
       getWheelDelta:function(event){ //获取表示鼠标滚轮滚动方向的数值
          if(event.wheelDelta){
             return event.wheelDelta;
          }else{
             return -event.detail*40;
          }
       },
            
       getCharCode:function(event){   //以跨浏览器取得相同的字符编码,需在keypress事件中使用
          if(typeof event.charCode=="number"){
             return event.charCode;
          }else{
             return event.keyCode;
          }
       }
            
    };
    

    等我试完再给大家报告,大概的调用方法是:

    (我在原来的打官方默认飞机例子,加了BOSS战斗)

    import DataBus from '../databus'
    import Enemy from '../npc/enemy'
    let databus = new DataBus()
    export default class level_manager
    {
      constructor(bossCount=1){
        this.bossCount = bossCount
        this.isBossTime = false 
        this.boss = null
        this.databus = new DataBus()
      }
    
      update()
      {
        if(this.isBossTime)
        {
          if(this.boss==null)
          {
            this.generateBoss()
          }
    
        }
      }
    
      generateBoss(){
        let enemy = databus.pool.getItemByClass('enemy', Enemy)
        enemy.init(1)
        databus.enemys.push(enemy)
        this.boss = enemy
      }
    
    }
    
    
    

     

    展开全文
  • Unity微信登录例子

    2020-07-30 23:30:19
    ShareSDK是为APP提供社会化功能的一个组件,开发者只需10分钟即可集成到自己的APP中,它不仅支持如QQ、微信、新浪微博、腾讯微博、开心网、人人网、...这是Unity微信登录例子,在安卓下已测试通过,内附详细步骤说明。
  • unity接入原生微信sdk安卓工程源文件,可改包名直接打包供unity用,微信sdk要包名,appid,签名一致才能调起
  • 错误总结 1. Permission denied的解决方法:chmod +x /Users/majiang/Desktop/U3DIOS/MapFileParser.sh 2. 必须将libWeChatSDK.a文件放到... 在unity的playerSetting中把auto graphics api的钩去除把metal删除 4.

    unity想跑IOS。必须拿真机测试。
    错误总结
    1. Permission denied的解决方法:chmod +x /Users/majiang/Desktop/U3DIOS/MapFileParser.sh
    2. 必须将libWeChatSDK.a文件放到项目的Libraries文件夹下,然后在导入
    3. 在unity的playerSetting中把auto graphics api的钩去除把metal删除
    4. 如果爆不知名的错请把build settings 中的oc automatic这项选成YES
    5. 把SendAuthReq中的autorelease去掉

    extern "C"{
        void WeiXinLoginByIos(){
            NSLog(@"111");
            //构造SendAuthReq结构体
            SendAuthReq* req =[[SendAuthReq alloc ] init ];
            req.scope = @"snsapi_userinfo" ;
            req.state = @"123" ;
            //第三方向微信终端发送一个SendAuthReq消息结构
            [WXApi sendReq:req];
        }
    }
    //重写微信方法(必要步骤)
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
        return [WXApi handleOpenURL:url delegate:self];
    }
    
    //重写微信方法(必要步骤)
    -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
        return [WXApi handleOpenURL:url delegate:self];
    }
    
    -(void) onReq:(BaseReq *)req{}
    
    #define WeiXinID @"你的APPID"
    #define WeiXinSecret @"你的APPSecret"
    #define GameObjectName "UI_Root"
    #define MethodName "json_UserInfo"
    
    -(void) onResp:(BaseResp *)resp{
        if (resp.errCode==0) {
            NSLog(@"微信登录返回成功!");
    
        }else{
            NSLog(@"微信登录失败! %d",resp.errCode);
        }
        /*
         enum  WXErrCode {
         WXSuccess           = 0,    成功
         WXErrCodeCommon     = -1,  普通错误类型
         WXErrCodeUserCancel = -2,    用户点击取消并返回
         WXErrCodeSentFail   = -3,   发送失败
         WXErrCodeAuthDeny   = -4,    授权失败
         WXErrCodeUnsupport  = -5,   微信不支持
         };
         */
        // 返回成功,获取Code
        SendAuthResp *sendResp = resp;
        NSString *code = sendResp.code;
        NSLog(@"code=%@",sendResp.code);
        // 根据Code获取AccessToken(有限期2个小时)
        // https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 
    
        //
        // 发起GET请求
        // 2.1.设置请求路径
        NSString *urlStr = [NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code 
    
    ",WeiXinID,WeiXinSecret,code];
    
        // 转码
        urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        // URL里面不能包含中文
        NSURL *url = [NSURL URLWithString:urlStr];
        // 2.2.创建请求对象
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 默认就是GET请求
        request.timeoutInterval = 5; // 设置请求超时
        // 2.3.发送请求
        [self sendAsync:request];
    
        NSLog(@"---------已经发出请求");
    }
    //重写微信方法(必要步骤)
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
        return [WXApi handleOpenURL:url delegate:self];
    }
    
    //重写微信方法(必要步骤)
    -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
        return [WXApi handleOpenURL:url delegate:self];
    }
    
    -(void) onReq:(BaseReq *)req{}
    
    #define WeiXinID @"你的APPID"
    #define WeiXinSecret @"你的APPSecret"
    #define GameObjectName "UI_Root"
    #define MethodName "json_UserInfo"
    
    -(void) onResp:(BaseResp *)resp{
        if (resp.errCode==0) {
            NSLog(@"微信登录返回成功!");
    
        }else{
            NSLog(@"微信登录失败! %d",resp.errCode);
        }
        /*
         enum  WXErrCode {
         WXSuccess           = 0,    成功
         WXErrCodeCommon     = -1,  普通错误类型
         WXErrCodeUserCancel = -2,    用户点击取消并返回
         WXErrCodeSentFail   = -3,   发送失败
         WXErrCodeAuthDeny   = -4,    授权失败
         WXErrCodeUnsupport  = -5,   微信不支持
         };
         */
        // 返回成功,获取Code
        SendAuthResp *sendResp = resp;
        NSString *code = sendResp.code;
        NSLog(@"code=%@",sendResp.code);
        // 根据Code获取AccessToken(有限期2个小时)
        // https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 
    
        //
        // 发起GET请求
        // 2.1.设置请求路径
        NSString *urlStr = [NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code 
    
    ",WeiXinID,WeiXinSecret,code];
    
        // 转码
        urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        // URL里面不能包含中文
        NSURL *url = [NSURL URLWithString:urlStr];
        // 2.2.创建请求对象
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 默认就是GET请求
        request.timeoutInterval = 5; // 设置请求超时
        // 2.3.发送请求
        [self sendAsync:request];
    
        NSLog(@"---------已经发出请求");
    }
    展开全文
  • 将compile ‘com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+’加入到APP目录下的build.gradle中以下内容在android studio中的内容:package com.yjkj.zhuyun.wxapi;import android.content.Intent;...

    将compile ‘com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+’加入到APP目录下的build.gradle中

    以下内容在android studio中的内容:

    package com.yjkj.zhuyun.wxapi;
    
    import android.content.Intent;
    import android.os.Bundle;
    
    import com.tencent.mm.opensdk.modelbase.BaseReq;
    import com.tencent.mm.opensdk.modelbase.BaseResp;
    import com.tencent.mm.opensdk.modelmsg.SendAuth;
    import com.tencent.mm.opensdk.openapi.IWXAPI;
    import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
    import com.tencent.mm.opensdk.openapi.WXAPIFactory;
    import com.unity3d.player.UnityPlayer;
    import com.unity3d.player.UnityPlayerActivity;
    
    import org.json.JSONObject;
    
    import java.io.InputStreamReader;
    import java.net.URL;
    
    import javax.net.ssl.HttpsURLConnection;
    
    public class WXEntryActivity extends UnityPlayerActivity  implements IWXAPIEventHandler{
        public IWXAPI api;
        //微信APP_ID UnityPlayerActivity
        public static final String AppId = "你的APPID";
        public static final String AppSecret = "你的APPSecret";
        public static final String url1 = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=";
        public String furl, a_t_r,openId;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            api = WXAPIFactory.createWXAPI(this, AppId, true);
            api.registerApp(AppId);
            api.handleIntent(getIntent(), this);
        }
    
        //U3D的网络刷新方法
        protected void onNewIntent(Intent intent) {
            super.onNewIntent(intent);
            setIntent(intent);
            api.handleIntent(intent, this);
        }
    
        public void SdkLogin()                           //微信登录请求 , 这步执行成功后会弹出微信
        {
    
            SendAuth.Req req = new SendAuth.Req();
            req.scope = "snsapi_userinfo";
            req.state = "wechat_sdk_demo_test";
            api.sendReq(req);
        }
    
        @Override
        public void onReq(BaseReq baseReq) {
    
        }
    
        //发送到微信请求的响应结果
        @Override
        public void onResp(BaseResp baseResp) {
            System.out.println("微信响应" + baseResp.errCode);
            switch (baseResp.errCode) {
                case BaseResp.ErrCode.ERR_OK:
                    System.out.println("用户同意");
                    SendAuth.Resp newResp = (SendAuth.Resp) baseResp;
                    String code = newResp.code;
                    furl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AppId + "&secret=" + AppSecret + "&code=" + code + "&grant_type=authorization_code";
                    HTTPrequest http = new HTTPrequest();
                    http.start();
                    break;
                case BaseResp.ErrCode.ERR_AUTH_DENIED:
                    System.out.println("用户拒绝授权" + baseResp.openId);
                    break;
                case BaseResp.ErrCode.ERR_USER_CANCEL:
                    System.out.println("用户取消");
                    break;
            }
        }
    
        public class HTTPrequest extends Thread {
            public void run() {
                String urlget=furl;
                a_t_r="";
                try {
                    URL url = new URL(urlget);
                    HttpsURLConnection httpURLConnection = (HttpsURLConnection) url.openConnection();
                    httpURLConnection.setDoOutput(true);
                    httpURLConnection.setDoInput(true);
                    httpURLConnection.setConnectTimeout(10000);
                    httpURLConnection.setRequestMethod("GET");
                    httpURLConnection.connect();
                    InputStreamReader bis = new InputStreamReader(httpURLConnection.getInputStream(),"utf-8");
                    int c = 0;
                    while((c = bis.read()) != -1){
                        a_t_r=a_t_r+(char)c;
                    }
                    System.out.println("HTTP通信成功!"+a_t_r);
                }catch (Exception e) {
                    System.out.println(urlget + "  HTTP通信失败");
                    a_t_r = "http error";
                }
                if (a_t_r!="http error"){
                    if(openId == null)            //json暂时都是在unity中解开....  这里是调用unity解http回应的json
                        UnityPlayer.UnitySendMessage("UI_Root","json_AcToken",a_t_r);
                    else
                        UnityPlayer.UnitySendMessage("UI_Root","json_UserInfo",a_t_r);
                }
            }
        }
    //unity 解 出access_token , 和 openID 后找微信服务器拉用户信息
        public void GetUserInfoReq(String ac_token, String openID) {             //
            openId = openID;
            this.furl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + ac_token + "&openid=" + openID;
            HTTPrequest tt = new HTTPrequest();
            tt.start();
        }
    }以下内容在unity3D中
    /// <summary>
    /// 带返回值的Call  
    /// </summary>
    /// <typeparam name="T">返回值</typeparam>
    /// <param name="apiName">方法名</param>
    /// <param name="args">参数</param>
    /// <returns></returns>
    public T _CallSdkApiReturn<T>(string apiName, params object[] args)
    {
        AndroidJavaObject jo = _GetCurrentAndroidJavaObject();
        return jo.Call<T>(apiName, args);
    }
    
    public void _CallSdkApi(string apiName, params object[] args)
    {
        AndroidJavaObject jo = _GetCurrentAndroidJavaObject();
        jo.Call(apiName, args);
    }
    
    /// <summary>
    /// 通过code获取access_token和openid
    /// </summary>
    /// <param name="str"></param>
    public void json_AcToken(string str)
    {
        Dictionary<string, object> JsonGet = MiniJSON.Json.Deserialize(str) as Dictionary<string, object>;
        string openid1 = JsonGet["openid"].ToString();
        string access_token = JsonGet["access_token"].ToString();
        string[] str2 = new string[] { access_token, openid1 };
        _CallSdkApi("GetUserInfoReq", str2);//调用jar包中的方法
        Debug.Log("openid为:" + openid1 + "access_token为:" + access_token);
    }
    
    /// <summary>
        /// 通过access_token和openid获取用户个人信息
        /// </summary>
        /// <param name="str"></param>
        public void json_UserInfo(string str)
        {
            Dictionary<string, object> JsonGet = MiniJSON.Json.Deserialize(str) as Dictionary<string, object>;
            string openid = JsonGet["openid"].ToString();
            string nickname = JsonGet["nickname"].ToString();
            string sex = JsonGet["sex"].ToString();
            string province = JsonGet["province"].ToString();
            string city = JsonGet["city"].ToString();
            string country = JsonGet["country"].ToString();
            string headimgurl = JsonGet["headimgurl"].ToString();          //头像是一个链接还得下载下来.....  
            string privilege = JsonGet["privilege"].ToString();
            string unionid = JsonGet["unionid"].ToString();
            Debug.Log("用户信息: " + "\nopenID:" + openid + "\nnickname:" + nickname
                + "\nsex" + sex + "\nprovince" + province + "\ncity" + city + "\ncountry" + country
                + "\nheadimgurl" + headimgurl + "\nunionID" + unionid);
        }
    展开全文
  •  微信登录愁了我整整一周,Mob的客服哥哥也是让我烦了一周,总算是最后成功了,坑很多,我把整个详细的流程记录下来,供Unity开发的朋友们做参考,也是我自己的一个记录。 开发前的准备  1. 首先你要有微信...
  • unity接入 微信登录sdk

    2019-11-27 16:20:40
    首次吐槽一下,微信官方的文档真的是服了,各种坑,而且贼不详细,而且还只能原生接入,在做sdk给unity,对于不懂原生的小白来说简直噩梦啊!!!!为了接入恶补了一波原生 进入正题,首先还是要去注册账号,申请...
  • Andoid版本 微信官方文档 app端开发步骤:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 SDK和Demo下载: ... 如果你已经成功集成了微信登录和分享,那么
  • 首先说明,本人纯新手,不动Android也不懂iOS,作为一个这样的新手,在Unity里面实现微信登录真是费了不少劲,好在ShareSDK给集成了很多东西,就这样还是走了很多很多的弯路,为了避免后面的同学再次走弯路,我决定...
  • 最近用unity对接微信登录,本来以为很容易的东西,后面却因为一些坑耗费了不少时间,在此记录备忘下。 1、在确认微信移动应用appid没填错,且包名和应用签名也对应上后,调用微信授权总是没跳到微信授权界面,而是...
  • Andoid版本 微信官方文档 app端开发步骤:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 SDK和Demo下载: ...如果你已经成功集成了微信登录和分享,那么此文将助你快速集成微信支...
  • Unity2018接入微信登录

    2019-03-28 10:11:11
    Info.plist 配置 <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>.../key&...
  • Unity-iOS接入微信SDK-微信登录前言下载微信SDK导出Unity Xcode项目Xcode导入微信SDKXcode相关属性配置脚本修改踩过的坑参考文章 前言 默认熟悉Unity 和 Xcode 开发工具的基本使用方法,并且具有一定的编程知识基础....
  • 很多开发Unity的同学, 都想自己开发微信小游戏,无奈tiny还不成熟,导致很多同学有自己创业做微信小游戏的想法,但是由于技术,却放弃了这样的机会,今天我给大家讲述unity同学如何转型做微信小游戏。 1: 解放思想...
  • Unity接入微信登录 微信分享 微信支付 支付宝支付 广州市码锋网络有限责...
  • 使用Unit3D开发的微信打飞机,一步一步记录了本项目的经过。
  • Unity IOS微信登录

    2018-09-06 12:08:44
    应公司项目要求,这段时间接手开始接入微信sdk,由于还未获取到微信的支付权限,所以这里只做了一下登录的记录,https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&amp;t=resource/res_list&...
  • 内容:文档介绍如何使用ShareSDK插件,unity3d案例实现QQ、微信登录和分享操作。
1 2 3 4 5 ... 20
收藏数 2,775
精华内容 1,110
关键字:

unity3d 位置 微信登录